C语言的问题~~编译预处理~~~~请大家帮忙看下~~谢谢哈
是道编译预处理的问题
#define PRI printf
#define NL "\n"
#define D "%d"
#define D1 D NL
#define D2 D D NL
#define D3 D D D NL
#define D4 D D D D NL
#define S "%s"
main()
{int a,b,c,d;
char string[]="china";
a=1;b=2;c=3;d=4;
PRI(D1,a);
PRI(D2,a,b);
PRI(D3,a,b,c);
PRI(D4,a,b,c,d);
PRI(S,string);
}
这是道挺普通的编译预处理的问题,以前都没觉得什么,可那天忽然很认真地将他全部代换过来后发现问题
比如:
PRI(D1,a);
这个代换过来之后是
printf("%d" "\n",a);
应该是这样没错吧,那么里面的两对双引号要怎么处理呢???
难道不会把第2和第3个双引号包括那个空格,都当成字符原样输出吗???
大家不要笑话我傻呀~~~~
期待回话,谢谢!!