以下代码在 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);
}
FOO
不使用宏就无法编译。它显示的实际参数不够MAX_OF_2
。为什么或编译器的任何错误?