有没有办法用 clang 或 gcc 中的编译指示禁用所有警告?

问题描述 投票:0回答:2

GCC 和 clang 允许您使用 -w 进行编译以禁用所有警告,但我看不到与之等效的 #pragma。我只能看到禁用单个文件的编译指示支持。

我需要这个,因为我有一些代码想要以高警告级别进行编译,但它必然会编译生成任意警告的第三方代码。

gcc warnings clang
2个回答
1
投票

你可以有点用GCC来做,几乎,使用

#pragma GCC diagnostic ignored
,但不幸的是不是很好,请参见这里

问题是你不能只是“禁用全部”,你必须禁用每一个。另外,对于某些警告它不起作用(并且文档不会告诉您哪些警告......)。

我的猜测是,这有点初步,并且(希望)在下一个版本中得到改进。


0
投票

对于 Clang 来说,是的!

#if defined(__clang__)
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Weverything"
#endif

... your terrible code ...

#if defined(__clang__)
#pragma clang diagnostic pop
#endif

Clang中有

-Weverything的特殊处理。

不幸的是GCC没有类似的功能。我尝试过

-Wall
;不起作用。我也阅读了源代码,但看不到任何其他可以工作的东西。

© www.soinside.com 2019 - 2024. All rights reserved.