Gcc LLVM:-Wno忽略的限定符等效?

Gcc LLVM:-Wno忽略的限定符等效?,gcc,llvm,clang,Gcc,Llvm,Clang,使用GCC,当启用-Wall-Wextra标志时,可以选择禁用警告,例如使用-Wno-ignored限定符禁用以下警告: warning: 'const' type qualifier on return type has no effect 有没有办法用LLVM/Clang实现相同的行为?我在谷歌上搜索了一下,但只找到了一些关于如何添加错误报告功能的补丁相关页面。没有关于如何禁用它的内容 我使用的是LLVM&Clang版本3.0(从SVN源代码构建) 注意:我本来打算在SuperUser上发

使用GCC,当启用
-Wall-Wextra
标志时,可以选择禁用警告,例如使用
-Wno-ignored限定符禁用以下警告:

warning: 'const' type qualifier on return type has no effect
有没有办法用LLVM/Clang实现相同的行为?我在谷歌上搜索了一下,但只找到了一些关于如何添加错误报告功能的补丁相关页面。没有关于如何禁用它的内容

我使用的是LLVM&Clang版本3.0(从SVN源代码构建)

注意:我本来打算在SuperUser上发布这篇文章的,但是这里没有一个关于Clang的问题,也没有LLVM标签,所以这让我很沮丧。如果这个问题仍然存在,请随意移动它

[编辑]当我从终端运行Makefile时,似乎可以识别该选项。当从Eclipse(Helios)运行时,它不会被识别


[解决方案]找到了它。显然,问题在于Eclipse(在Ubuntu下)是由root启动的。我不知道这是为什么,但其效果是$PATH变量包含root所拥有的,而不是启动Eclipse的用户所拥有的。因此,Eclipse使用的是较旧的系统范围安装版本Clang(2.80)。在Project Properties->C/C++Build->Environment中添加正确的PATH变量修复了此问题。

您使用的是什么版本的Clang<代码>-Wno忽略的限定符
适用于我:

% clang -Wall -Wextra -c foo.c
foo.c:1:1: warning: 'const' type qualifier on return type has no effect
      [-Wignored-qualifiers]
const int foo();
^~~~~
1 warning generated.
% clang -Wall -Wextra -Wno-ignored-qualifiers -c foo.c
%
通常,您可以查看
.td
文件,这些文件在收集所有诊断信息方面做得非常好。(Clang文档中有一个TODO,可以使用tblgen自动生成文档,但这还没有完成。)

在这种情况下,例如,您可以在中看到:


因此,
-Wno忽略的限定符就是它。Clang尽可能与GCC兼容,因此使用GCC名称通常是可行的。

我认为这是适合此类问题的S.E.站点。@nicholas riley Clang 3.0版(trunk 127980)。刚刚注意到一件非常奇怪的事情,在终端中,这个选项确实有效,在Eclipse中,它不起作用。听起来像是Eclipse中的一个bug。是的,我一直在搜索,但找不到任何关于它的信息。很烦人,现在我必须禁用-Wall,否则我会收到大约120条警告,因此我看不到有趣的错误。哦,好吧…wrt TODO,我在上面:)第一部分已经完成(增强诊断),我将很快开始第二部分的工作。。。不过我是在业余时间做的,所以你可能要等一两个月。@Matthieu:很高兴知道。祝你好运:-)
def warn_qual_return_type : Warning< 
  "'%0' type qualifier%s1 on return type %plural{1:has|:have}1 no effect">,
  InGroup<IgnoredQualifiers>, DefaultIgnore;
def IgnoredQualifiers : DiagGroup<"ignored-qualifiers">;