1
为什么在一种情况下嵌套宏可以工作,而另一种情况下不能?C嵌套宏
情况1:
#define name(val) #val
#define name2(front, back) name(front ## back)
...
printf("%s\n", name2(foo, bar)); // foobar
情况2:当它们与#
或在宏体##
一起出现(
#define paste(front, back) front ## back
#define name(val) #val
#define name2(front, back) name(paste(front, back))
...
printf("%s\n", name2(foo, bar)); // paste(foo, bar)
您是否在预处理过的表单(例如, (Linux)上的'gcc -C -E'获得的源程序(可以向其添加“中间”代码,如printf(“%s \ n”,名称(goo))'' – 2013-03-17 07:54:00
此链接有帮助对于我学习http://gcc.gnu.org/onlinedocs/cpp/Macros.html#Macros – yuan 2013-03-17 11:11:14