макро-вариада и пустой макро-вариада - PullRequest
0 голосов
/ 07 декабря 2018

Я знаю, что это недопустимо

#define MACRO(x, ...) __VA_ARGS__
MACRO(5); // VA ARGS is empty, so is not good

Однако действительно ли это допустимо?

#define MACRO(x, ...)
MACRO(5);

В Wandbox clang выдает предупреждение, gcc - нет, и на моем компьютереMSVC тоже нет.

1 Ответ

0 голосов
/ 07 декабря 2018

При тестировании с GCC (от версии 5.1 до последней версии 8.2) на godbolt.org это приводит к ошибке с параметром -pedantic-errors.

<source>:5:8: error: ISO C++11 requires at least one argument for the "..." in a variadic macro
 MACRO(5)

См. здесь .

Вам придется подождать, пока __VA_OPT__ (доступно из C ++ 2a) сделает то, что вы пытаетесь сделать.

...