C++ 可变宏需要一个没有意义的宏才能让它工作?

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

下面的代码在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 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
被认为是一个需要扩展的宏