目录
msvc的坑
__VA_ARGS__
exp1
如果__VA_ARGS__在宏里,那么__VA_ARGS__一定会占个位置,即使前面添加##也无用
但若修改了标准则没问题,macro正确展开为0,0
exp2
在gcc或者clang中,__VA_ARGS__会被展开为实际的参数,EXPAND在处理其参数的时候使用的是展开后的__VA_ARGS__, 当作多个变量处理。
而在msvc中,__VA_ARGS__所包含的所有元素将被作为EXPAND的1个参数进行B的替换。
可以看到无论传入几个参数,都是当作一个参数去处理的。(修改规则后则正常