注册 登录
编程论坛 C++教室

宏问题 #define TRACE(ARG) cout

wenzenglin 发布于 2007-04-10 16:37, 873 次点击
#include<iostream.h>
#define TRACE(ARG) cout<< #ARG<<endl;ARG
void main()
{
//for(int i=0;i<100;i++)cout<<i<<endl;
TRACE(for(int i=0;i<100;i++)) //这里有';'与无';'结果不一样,不知道这里的宏是如何替换的
TRACE(cout<<i<<endl;)
}



XDJM们,请指教一二~~
3 回复
#2
wenzenglin2007-04-11 10:49
不会吧,没人知道?
#3
游乐园2007-04-11 12:19

TRACE(for(int i=0;i<100;i++))
TRACE(cout<<i<<endl;)

注意 # 的用法 #ARG 意思是把ARG转换为字符串

/*没有分号 展开为
cout<<"for(int i=0;i<100;i++)"<<endl;
for(int i=0;i<100;i++) cout<<"cout<<i<<endl;"<<endl; //输出100次
cout<<i<<endl;

*/

/*有分号 展开为
cout<<"for(int i=0;i<100;i++)"<<endl;
for(int i=0;i<100;i++);//循环100次 不输出任何东西
cout<<"cout<<i<<endl;"<<endl;
cout<<i<<endl;
*/

#4
ljfabcd2007-04-13 21:55
1