【发布时间】:2011-07-05 07:21:15
【问题描述】:
考虑这段代码:
#define F(x, ...) X = x and VA_ARGS = __VA_ARGS__
#define G(...) F(__VA_ARGS__)
F(1, 2, 3)
G(1, 2, 3)
这两个宏的预期输出都是X = 1 and VA_ARGS = 2, 3,这就是我使用 GCC 得到的结果,但是,MSVC 将其扩展为:
X = 1 and VA_ARGS = 2, 3
X = 1, 2, 3 and VA_ARGS =
也就是说,__VA_ARGS__ 被扩展为单个参数,而不是被分解为多个参数。
有什么办法吗?
【问题讨论】:
标签: visual-c++ c-preprocessor variadic-macros