核心知识:宏定义中用到#和##的地方不再展开。
#define NAME(x,y,z) (#x+y##z+z)
#define LIU liu
#define WANG wang
#define ZHAO zhao
main()
{
printf("%s",NAME(LIU,WANG,ZHAO));
}
上面编译的结果是:LIU+WANGZHAO+zhao
可见:在同一个宏定义中,只是#和##的地方停止了展开,其它地方会继续展开。
另外:当使用的宏定义中用到#或者##时,一定要考虑使用时有没有宏嵌套,否则有可能出现错误。