示例代码:
#define FOO(...) You passed: #__VA_ARGS__
FOO(1,2,3)
FOO()
使用Visual C++(版本14 CTP)进行预处理,得到:
You passed: "1,2,3"
You passed:
在最后一行,
#__VA_ARGS__
变为虚无。我希望它变成“”。对于应该发生的事情是否有明确的引用?我在Google上搜索了很多,但找不到它。
任何建议的解决方法也将很有用。
最佳答案
按照 6.10.3.2#运算符(C11):
所以我认为MSVC在这里是不正确的。
我将使用字符串文字串联解决此问题:
#define FOO(...) You passed: "" #__VA_ARGS__
关于c++ - 没有传递任何参数时,应该产生什么#__VA_ARGS__?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24506239/