VS 2008中的两层调用__VA_ARGS__失败

时间:2013-12-11 06:19:58

标签: c++ macros variadic

对于以下情况,我使用 VA_ARGS

#define CHECK4(x,y,...) if ((x)) { y(__VA_ARGS__); }
#define CHECK5(x,y,...) if ((x)) { y(__VA_ARGS__); }

然后叫它:

CHECK5(1, CHECK4,1,printf, "here %s %s %s", "are", "some", "varargs2(4)\n");

在vs 2008中,CHECK5调用失败了,但是使用gcc它运行良好。 我应该如何让它在VS 2008中运行?

1 个答案:

答案 0 :(得分:1)

CHECK5(1, CHECK4(1,printf, "here %s %s %s", "are", "some", "varargs2(4)\n"), 1);