我知道这是无效的
#define MACRO(x, ...) __VA_ARGS__
MACRO(5); // VA ARGS is empty, so is not good
但是,这有效吗?
#define MACRO(x, ...)
MACRO(5);
在Wandbox上,clang会警告我,gcc不会,在我的计算机上MSVC也不会。
最佳答案
在godbolt.org上使用GCC(从5.1版到最新的8.2版)进行测试时,-pedantic-errors
选项导致错误。
<source>:5:8: error: ISO C++11 requires at least one argument for the "..." in a variadic macro
MACRO(5)
看到它here。
您将不得不等待
__VA_OPT__
(可从C++ 2a获得)完成您要尝试执行的操作。关于c++ - 宏可变参数和空宏可变参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53666261/