考虑以下代码:MSVC不展开__VA_ARGS__正确
#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
两个宏,这就是我与海湾合作委员会获得,但是,MSVC扩展了这个为:
X = 1 and VA_ARGS = 2, 3
X = 1, 2, 3 and VA_ARGS =
也就是说,__VA_ARGS__
被扩展为单个参数,而不是分解为多个参数。
任何方法?
我的第一个想法是获得更好的编译器。如果这是您在MSVC遇到的第一个也是最严重的错误,那么您会遇到大量令人不快的意外... – 2011-02-27 17:10:55
@R:没有选项:P – uj2 2011-02-27 17:16:50