#define cat(x,y) x##y
main()
{
printf("%d",cat(cat(cat(3,3),cat(3,4)),5));
}
为什么会出错? 根据我的知识,O / P应该是
cat(cat(3,3),cat(3,4)),5
因为连接内部宏不会扩展。为什么不发生这种情况?
答案 0 :(得分:3)
间接打电话。
#define cat_(x,y) x##y
#define cat(x,y) cat_(x,y)
答案 1 :(得分:1)
如果宏定义的替换列表中出现多个##运算符和/或#运算符,则不定义运算符的计算顺序。
<强> Read more here 强>