我有代码:
#ifdef Q_OS_LINUX
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wcomment"
#include "header.h"
#pragma GCC diagnostic pop
#endif
我想要抑制与header.h相关的GCC警告消息以及header.h中包含的所有头文件。但我仍然有与header.h中包含的标题相关的'-Wcomment'警告。我怎么能避免这种情况?感谢
gcc 4.8.2
编辑:我得到的警告如下:
/ ------将模拟输出设置为8022/8026 --------- / Exp8K WORD CALLBACK AnalogOutHex_8K(DWORD dwBuf [],float fBuf [],警告:“/ ” 在评论中[-Wcomment]肯定没有其他的pragma。 - 墙不起作用
答案 0 :(得分:2)
#pragma GCC diagnostic ignored "-Wcomment"
/* /* */
这在C ++模式下发出警告,但不在C模式下发出警告。
鉴于pragma不起作用,你应该采取其他方法。如果您可以修改标题,只需更改注释即可。如果无法更改标头,则可以将标头所在的特定目录标记为系统标头目录(使用-isystem
命令行选项)。
答案 1 :(得分:1)
如果您可以修改header.h
,则可以使用#pragma GCC system_header
将其定义为system header。否则,您可以使用-isystem
将其添加到gcc命令行。
GCC正在处理系统标题时,将禁止除“#warning”(参见“诊断”)生成的警告以外的所有警告。
答案 2 :(得分:0)
您尚未包含完整的cpp文件。我的猜测是早期的包含已经包含了一些头文件。这些头文件可能会有标题保护,以防止头文件被包含多次。因此#pragma并没有真正做任何事情。
最好的办法是在包含其他任何内容之前移动#pragmas并将其包含在头文件的顶部。请记住,您还可以推送和弹出诊断编译指示。