C++ 可变宏需要一个没有意义的宏才能让它工作?
下面的代码在VC++2012上没有问题C++ 可变宏需要一个没有意义的宏才能让它工作?,c++,macros,variadic-macros,C++,Macros,Variadic Macros,下面的代码在VC++2012上没有问题 #include <algorithm> #define MAX_OF_2(a,b) std::max(a,b) #define FOO(a) a // work #define MAX2(...) FOO(MAX_OF_2(__VA_ARGS__)) // Not work // #define MAX2(...) MAX_OF_2(__VA_ARGS__) int m
#include <algorithm>
#define MAX_OF_2(a,b) std::max(a,b)
#define FOO(a) a
// work
#define MAX2(...) FOO(MAX_OF_2(__VA_ARGS__))
// Not work
// #define MAX2(...) MAX_OF_2(__VA_ARGS__)
int main()
{
int i = MAX2(1,2);
}
#包括
#定义_2(a,b)标准的最大值::最大值(a,b)
#定义FOO(a)a
//工作
#定义MAX2(…)FOO(MAX_OF_2(uu VA_ARGS_uu))
//不行
//#定义MAX2(…)MAX_OF_2(uu VA_ARGS_uu)
int main()
{
int i=MAX2(1,2);
}
如果不使用FOO
宏,它将无法编译。它显示不完整的实际参数,用于MAX\u OF_2
。编译器上为什么会出现错误?这是一个已知的问题
在您的例子中,\uu VA\u ARGS\uu
被认为是一个需要扩展的宏