我注意到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编译两行。
答案 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的相对位置。
我完全没问题。它应该写在某个地方(我可能已经错过了它!)