Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 可变宏的2种不同语法_C++_C_Syntax_Variadic Macros - Fatal编程技术网

C++ 可变宏的2种不同语法

C++ 可变宏的2种不同语法,c++,c,syntax,variadic-macros,C++,C,Syntax,Variadic Macros,它们之间有什么功能上的区别吗?(即,在某些情况下,其中一个可以比另一个更好地使用)。另外,这两种语法都包含在C++11中吗?第一种语法是标准C99,也是标准C++11。第二个,我相信是GNU特定的扩展。在C99中,(2)给出了一个关于gcc的错误。我相信你的意思是GNUCPP扩展。@Jesse:我当然会允许(1)和(2)由预处理器处理。我不知道你说的“在C99中,(2)在gcc上给你一个错误”是什么意思。你是说用gcc编译时--std=C99?或者您是在完全没有预处理器的情况下编译的?我相信您需

它们之间有什么功能上的区别吗?(即,在某些情况下,其中一个可以比另一个更好地使用)。另外,这两种语法都包含在C++11中吗?

第一种语法是标准C99,也是标准C++11。第二个,我相信是GNU特定的扩展。

在C99中,(2)给出了一个关于gcc的错误。我相信你的意思是GNUCPP扩展。@Jesse:我当然会允许(1)和(2)由预处理器处理。我不知道你说的“在C99中,(2)在gcc上给你一个错误”是什么意思。你是说用
gcc编译时--std=C99
?或者您是在完全没有预处理器的情况下编译的?我相信您需要
gcc-Wall-pedantic-std=c99
来生成
警告:ISO C不允许命名变量宏
#define TEST(X, ...)       X ## __VA_ARGS__    // (1)
#define TEST(X, args...)   X ## args           // (2)