VS 2008中对__VA_ARGS_的两层调用失败

two layers call for __VA_ARGS__ in VS 2008 failed

本文关键字:两层 调用 失败 中对 2008 VA ARGS VS      更新时间:2023-10-16

对于以下情况,我使用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");

在2008年的版本中,CHECK5调用失败,但使用gcc运行良好。我应该如何让它在VS 2008中工作?

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