考虑这段代码:
#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__
将其扩展为单个参数,而不是分解为多个参数。
有什么办法吗?