gcc如何抑制不兼容指针类型警告?

5
在我们的项目中,警告被视为错误。该规则是从顶层makefile应用的。
我想要抑制第三方代码的警告。
当传递参数给函数调用时,我收到“不兼容的指针类型”警告。
我尝试了“-Wno-incompatible-pointer-types”。但是,编译器不支持它。
我正在使用gcc.c4.2.1-p4.ppc-linux。
有人可以告诉我如何抑制这个“不兼容的指针类型”警告吗?
2个回答

5
我已经查阅了GCC文档(https://gcc.gnu.org/onlinedocs/)。选项“-Wno-incompatible-pointer-types”在最新的GCC 4.x版本中尚不可用,但是从第一个GCC 5.x版本开始就可用。
由于您正在使用GCC版本4.2.1,因此您目前无法使用选项“-Wno-incompatible-pointer-types”。请迁移到GCC 5.x或更高版本。

1

由于某些第三方代码不受您控制,您无需压制整个项目中的所有不兼容指针类型警告。相反,考虑抑制由处理此第三方代码引起的所有警告,同时保留自己的代码的所有警告。

您可以通过将第三方头文件指定为“系统头文件”来实现这一点。GCC有一个选项可供使用。不要使用-I参数传递第三方头文件,而应改用-isystem。 GCC会特殊处理系统头文件,并且不会为它们生成警告(除了由 #pragma warning引起的警告)。


谢谢Nikita! 对于这个特定的警告,是否有一个像“-Wno-”这样的忽略标志? - Siva Kumar
可能不行。尝试使用-fdiagnostics-show-option参数进行编译。对于可以被抑制的警告,输出中会有警告名称。如果您看不到任何名称或看到类似[enabled by default]的东西,则无法解决问题。 - Nikita Kakuev
我尝试了-fdiagnostics-show-option。它适用于其他类型的警告(如未使用、符号比较等)。但是它没有为以下两种警告类型提供任何信息:不兼容的指针类型,左移计数>=类型宽度。 - Siva Kumar
可能还有其他类型的警告无法使用“-W”标志和编译指示符来抑制。但是您仍然可以使用“-isystem”技巧。 - Nikita Kakuev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接