【发布时间】:2010-12-03 15:36:52
【问题描述】:
是否有 #pragma 让 gcc/Xcode 抑制特定警告,类似于 Java 的 @SuppressWarning 注释?
我通常使用-Wall 进行编译,但在某些情况下我想忽略特定警告(例如,在编写一些快速/脏代码只是为了帮助调试某些东西时)。
我不是在寻找“修复代码”的答案。
【问题讨论】:
标签: xcode gcc pragma gcc-warning
是否有 #pragma 让 gcc/Xcode 抑制特定警告,类似于 Java 的 @SuppressWarning 注释?
我通常使用-Wall 进行编译,但在某些情况下我想忽略特定警告(例如,在编写一些快速/脏代码只是为了帮助调试某些东西时)。
我不是在寻找“修复代码”的答案。
【问题讨论】:
标签: xcode gcc pragma gcc-warning
Here's a viable solution。使用#pragma GCC system_header 让GCC 以一种非常特殊的方式处理您的代码,从而抑制任何非致命的#warning。
请记住,您只是在欺骗您的预处理器,而不是真正的编译器。大多数情况下,抑制警告可能是有害的。
【讨论】:
在 gcc4.6 及更高版本中,您可以使用编译指示来抑制特定的警告,并且只对特定的代码块进行抑制,即:
#pragma GCC diagnostic
push #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
// Code that causes warning goes here
#pragma GCC diagnostic pop
push/pop 用于保留处理代码之前的诊断选项。
这比使用“#pragma GCC system_header”抑制所有警告要好得多。 (当然,在较旧的 gcc 中,您可能会“卡住”#pragma GCC system_header 方法!)
这是关于抑制 gcc 警告的一个很好的参考: http://www.dbp-consulting.com/tutorials/SuppressingGCCWarnings.html
本页还介绍了如何使用-fdiagnostics-show-option 找出控制特定警告的选项。
当然,正如其他人所提到的,解决所有警告的根本原因通常比压制它们要好得多!但是,有时这是不可能的。
【讨论】: