提问人:ThreeBit 提问时间:6/2/2012 更新时间:11/15/2023 访问量:2595
有没有办法在 clang 或 gcc 中使用编译指示禁用所有警告?
Is there any way to disable all warnings with a pragma in clang or gcc?
问:
GCC 和 clang 允许您使用 -w 进行编译以禁用所有警告,但我看不到 #pragma 等效项。我只能看到对禁用单个文件的编译指示支持。
我需要这个,因为我有代码,我想编译具有高警告级别的代码,但必须编译生成任意警告的第三方代码。
答:
1赞
Damon
6/2/2012
#1
你可以用 GCC 来做到这一点,几乎,使用 ,但不幸的是不是很好,看这里。#pragma GCC diagnostic ignored
问题是你不能只是“全部禁用”,你必须禁用每一个。另外,对于某些警告,它不起作用(并且文档不会告诉您哪些......
我的猜测是,这有点初步,并且(希望)将在下一个版本中得到改进。
评论
1赞
Thomas
4/19/2018
#pragma GCC diagnostic ignored "-Wall"
似乎对我有用。如果需要,请再添加一行(因为不是全部)。-Wextra
-Wall
2赞
Autechre
9/30/2022
它不适用于 gcc 9.3
1赞
Stéphane
4/10/2023
在 g++ 11.3.0 中,我也无法让它为我工作。
0赞
Timmmm
11/15/2023
#2
对于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
评论
Makefile