铿锵W旗令

时间:2015-08-06 12:01:01

标签: c++ clang++

我注意到clang的一个有趣的行为(我使用3.6.0),我在文档或其他任何地方都没有找到任何关于它的引用。这是一个小例子:

int main(){
    int a;
    return 0;
}

我用clang++ -Wall -W -Werror -Wno-error=unused-variable main.cpp编译它,我有预期的警告:

main.cpp:2:9: warning: unused variable 'a' [-Wunused-variable]
    int a;
1 warning generated.

现在,让我们试试clang++ -Werror -Wno-error=unused-variable -Wall -W main.cpp

main.cpp:2:9: error: unused variable 'a' [-Werror,-Wunused-variable]
    int a;
1 error generated.

我错过了什么吗?这是预期的吗?就此而言,gcc编译两行。

1 个答案:

答案 0 :(得分:1)

以下是我的回答:

  

我认为更好的标题是-Wno-error是位置依赖于命令行而-Werror不是。重要的部分是诊断是错误还是警告。举个例子:

int main() {
  int a;
  return 0;
}

$ clang main.cpp -Wunused-variable
  

这会给出一个未使用的变量警告。

$ clang main.cpp -Werror -Wunused-variable
$ clang main.cpp -Wunused-variable -Werror
  

这两个都给出了一个未使用的变量错误。 - 错误不会改变   基于职位的行为。

$ clang main.cpp -Werror -Wno-error=unused-variable -Wunused-variable
$ clang main.cpp -Werror -Wunused-variable -Wno-error=unused-variable
  

第一个给出错误,而第二个给出警告。这个   表示-Wno-error = *取决于位置。 (海湾合作委员会将发布   这两行的警告。)

     

-Werror不会交互或依赖于命令行上的警告。   -Wno-error = warning取决于它与-wwarning的相对位置。

我完全没问题。它应该写在某个地方(我可能已经错过了它!)