以下代码在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
的实际参数不够实用。为什么或编译器有任何错误?