是否有gcc / Xcode编译指示来抑制警告?

时间:2009-10-03 21:50:53

标签: xcode gcc pragma gcc-warning

是否有#pragma让gcc / Xcode禁止特定警告,类似于Java的@SuppressWarning注释?

我通常使用-Wall进行编译,但在某些情况下我只想忽略一个特定的警告(例如,在编写一些快速/脏代码时只是为了帮助调试某些东西)。

我不是在寻找“修复代码”的答案。

2 个答案:

答案 0 :(得分:3)

Here's a viable solution。使用#pragma GCC system_header让GCC以非常特殊的方式处理您的代码,从而抑制任何非致命的#warning

记住你只是在欺骗你的预处理器,而不是真正的编译器。抑制警告可能在很多时候都是有害的。

答案 1 :(得分:2)

在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找出控制特定警告的选项。

当然,正如其他人所提到的,通常更可取的是解决所有警告的根本原因而不是压制它们!但是,有时这是不可能的。