【发布时间】:2010-10-15 08:45:01
【问题描述】:
我想用 C 写一个宏,它接受任意数量的参数,而不是特定的数量
示例:
#define macro( X ) something_complicated( whatever( X ) )
其中X 是任意数量的参数
我需要这个,因为whatever 已重载,可以使用 2 或 4 个参数调用。
我尝试定义宏两次,但第二个定义覆盖了第一个!
我正在使用的编译器是 g++(更具体地说,是 mingw)
【问题讨论】:
-
你想要 C 还是 C++?如果您使用 C,为什么要使用 C++ 编译器进行编译?要使用正确的 C99 可变参数宏,您应该使用支持 C99(如 gcc)的 C 编译器而不是 C++ 编译器进行编译,因为 C++ 没有标准可变参数宏。
-
好吧,我认为 C++ 在这方面是 C 的超集..
-
tigcc.ticalc.org/doc/cpp.html#SEC13有可变参数宏的详细解释。
-
对于未来的读者:C 不是 C++ 的子集。它们共享许多东西,但有一些规则阻止它们成为彼此的子集和超集。
标签: c g++ c-preprocessor variadic