Макросам Variadic нужен бесполезный макрос, чтобы он работал?

Следующий код в порядке на 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, Почему или какая-либо ошибка на компиляторе?

2

Решение

Это известный ошибка в MSVC

В твоем случае __VA_ARGS__ считается, что это макрос, который нуждается в расширении.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]