3

是否有#pragmagcc/Xcode 抑制特定警告,类似于 Java 的@SuppressWarning注释?

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

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

4

2 回答 2

3

这是一个可行的解决方案。用于#pragma GCC system_header让 GCC 以一种非常特殊的方式处理您的代码,从而抑制任何非致命#warning的 .

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

于 2009-10-03T21:57:00.693 回答
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来找出控制特定警告的选项。

Of course, as others mention, it's generally far preferable to fix the root cause of all warnings than to suppress them! However, sometimes that is not possible.

于 2014-09-16T18:31:04.443 回答