如何使用Clang 3.8禁用单个文件的所有警告?

时间:2016-05-24 18:43:04

标签: clang

我使用Clang 3.8编译来自项目中不同来源的一个文件。这是一个临时的拐杖,因为这个文件是我也使用的库的补充,它所拥有的代码将成为该库的下一个版本的一部分。然而,这些人的警告标志不如我那么严格。

我对这些警告并不感兴趣,因为他们是良性的,我不会维护这个档案,而且它会在几个月内消失。当然,我可以有选择地删除一两个警告,但我认为在这种情况下更有意义的是禁用它生成的所有警告,因为我可以稍后更改我的项目的警告设置,更多的事件可能会出现它

我已尝试#pragma clang diagnostic ignored "-Weverything",但Clang警告-Weverything是一个未知的警告组。

如何让Clang不为该文件生成任何警告?

2 个答案:

答案 0 :(得分:11)

实际上,“-Weverything”不是一组警告,而只是传递给编译器的特殊选项。以下是处理此案例的代码:lib/Basic/Warnings.cpp:118

您仍然可以使用与其他来源稍微不同的规则/标志来编译有问题的源文件:

clang -Wno-everything foo.c

但是,我建议您使用#pragma明确禁用每个警告。

如果您禁用所有警告,然后升级编译器,那么您可能会错过一些可能很重要的新警告(例如未定义的行为检查,安全检查等)。

另外,想象一下如果文件在三个月后没有消失会发生什么,但永远留在项目中。

答案 1 :(得分:0)

如果需要编译器标志在GCC和Clang之间保持一致,则它们都具有-w标志:

$ clang --help | grep -i suppress
  -w                      Suppress all warnings