+ -
当前位置:首页 → 问答吧 → 这个define展开后怎么不对啊?

这个define展开后怎么不对啊?

时间:2011-11-30

来源:互联网

#define vc(x,y) x##y
void main(){
  vc(vc(1,2),3);//这个展开过后为什么不是123啊?那它应该是多少?
}

作者: angle_sean1   发布时间: 2011-11-30

因为作为形参的嵌套宏是不会先行展开的,只会将其当作完整的实参,vc展开后会成为这个样子:

vc(1,2)3

这是一个错误的token。

作者: supermegaboy   发布时间: 2011-11-30

引用 1 楼 supermegaboy 的回复:
因为作为形参的嵌套宏是不会先行展开的,只会将其当作完整的实参,vc展开后会成为这个样子:

vc(1,2)3

这是一个错误的token。

+1

作者: hnuqinhuan   发布时间: 2011-11-30