2

以下代码在 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。为什么或编译器的任何错误?

4

1 回答 1

3

这是msvc中的一个已知错误

在您的情况下__VA_ARGS__,它被视为需要扩展的宏。

于 2013-07-13T23:12:22.320 回答