Home:ALL Converter>Are Variadic macros nonstandard?

Are Variadic macros nonstandard?

Ask Time:2011-01-25T04:12:42         Author:user350814

Json Formatter

For debugbuilds, I usually use Clang, as it formats warnings and errors better, and makes it a little easier to track them down, and fix them.

But recently after adding a Macro with variadic arguments, Clang told me the following (from a dummy project):

main.cpp:5:20: warning: named variadic macros are a GNU extension [-Wvariadic-macros]
#define stuff3(args...)  stuff_i(args)

I know that macroname(args...) compiles fine in a wide range of compilers, including Visualstudio, Sunstudio, and of course GCC. But just to make sure that clang is right, I tried two other ways of expanding the variadic arguments:

Number 1:

#define stuff1(...)  stuff_i(...)

Number 2:

#define stuff2(...)  stuff_i(__VA_ARGS__)

On both I receive this message:

main.cpp:3:16: warning: variadic macros were introduced in C99 [-Wvariadic-macros]

... Which makes me wonder if Variadic macros are actually part of the standard of C++ (and of course I know that the Preprocessor is interpreted independently)?

Author:user350814,eproduced under the CC 4.0 BY-SA copyright license with a link to the original source and this disclaimer.
Link to original article:https://stackoverflow.com/questions/4786649/are-variadic-macros-nonstandard
yy