示例代码:

#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/

10-11 15:32