c++ - 两层在 VS 2008 中调用 __VA_ARGS__ 失败

标签 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 中工作?

最佳答案

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

关于c++ - 两层在 VS 2008 中调用 __VA_ARGS__ 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20511943/

相关文章:

macros - 是否可以修改宏内部 token 的大小写?

c++ - 追加 __FUNCTION__ 宏提供的字符串

ios - 在 iOS x64 中获取可变参数函数的参数

c - c中具有不同类型参数的可变参数函数

c++ - 类声明后编译错误,Main 没有 "see"类

c++ - 我的程序泄漏了 boost::shared_ptr 拥有的资源

c++ - 如何清理(用随机字节覆盖)std::string 内部缓冲区?

c++ - boost asio async_tcp_echo_server 示例

c++ - C++ 放置的多个参数 new 'constructor'

c++ - 折叠表达式、参数包扩展、类成员函数中的递归