【发布时间】:2023-12-05 18:33:01
【问题描述】:
我们正在对 C、C++ 和 Java 的代码库进行一些代码清理、修复有符号/无符号比较、运行静态分析等。
我们收到的警告之一是
warning: ISO C does not permit named variadic macros
及其伴随的警告
warning: ISO C99 requires rest arguments to be used
现在,在 C 代码中,我使用 C99 standard variadic macro 来解决问题,但在 C++ 代码中,正确答案是什么?使用相同的 C99 样式会导致不同的警告
warning: anonymous variadic macros were introduced in C99
我没有看到任何答案。
我们在 Linux 中使用 GCC (G++) 4.4.3。
我希望有一些标志或其他方法可以纠正或禁用特定代码部分 - 但它用于几乎每个文件中使用的日志记录...
【问题讨论】:
-
使用 C++11。在 GCC 命令行上输入
-std=c++0x或-std=c++11。或者只是忽略警告。 -
是的,还没有使用 c++11,只是支持不够好(还)
-
所以你基本上是在说@Bo-Persson 没有办法消除警告(除了关闭它们),因为可变参数宏在 C++ 11 之前不是标准的 C++ 吗?跨度>
-
@Petri - 我现在没有任何其他方式。 gcc 4.4.3 可能不知道 C++ 的最新变化。
标签: c++ c macros c99 variadic-macros