c++ - 使用更少的参数调用 C++ 宏

标签 c++ macros g++ c-preprocessor

是否可以在 linux 中使用更少的所有参数来调用类似函数的宏? 实际上这样做只会在 Visual Studio 中生成警告(警告 4003)并且未分配的变量会替换为“”。

但是使用 g++ 编译它会在 linux 中产生错误(“错误:宏 *** 需要 ** 参数,但仅 ** 给定”)。

是否有任何可能的方法来禁用或克服它?

最佳答案

宏调用中的参数数量必须与宏定义中的参数数量完全匹配。所以,不,您不能使用比参数少的参数调用宏。

要“克服”它,您可以使用不同数量的参数定义多个不同名称的宏。

C++0x(还不是标准,但你的编译器可能部分支持)增加了对可变参数宏的支持,可以用可变数量的参数调用。

关于c++ - 使用更少的参数调用 C++ 宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3301152/

相关文章:

C++ 动态分配的二维数组过度分配内存?

c++ - OpenGL 中的蠕虫爬行运动?

JavaScript + ANT 问题

visual-studio-2010 - 在 Visual studio 2010 上启动新实例

c++ - 对 `typeinfo and ' vtable 的 undefined reference

c++ - 如何声明某个结构的成员 var 类型的 var?

c++ - 汇编程序消息:错误:拇指条件指令应放在IT block 中— `strexeq r1,r2,[r4]'

c - 如何在 C 中使用静态断言来检查传递给宏的参数类型

c++ - 将 Qt 添加到现有的 GNU C++ 程序

c++ - 为什么 gcc 没有从多目标函数中捕获异常?