我注意到一个有趣的行为与clang(我使用3.6.0),我没有在文档或其他任何地方找到任何关于它的参考.这是一个小例子:
int main(){
int a;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我编译它,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.
Run Code Online (Sandbox Code Playgroud)
现在,让我们试试吧 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.
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?这是预期的吗?对于这一点,gcc编译两行.
这是我得到的答复:
我认为更好的标题是 -Wno-error 位置依赖于命令行,而 -Werror 则不是。重要的是诊断是错误还是警告。举个例子:
int main() {
int a;
return 0;
}
$ clang main.cpp -Wunused-variable
Run Code Online (Sandbox Code Playgroud)
这会给出未使用的变量警告。
$ clang main.cpp -Werror -Wunused-variable
$ clang main.cpp -Wunused-variable -Werror
Run Code Online (Sandbox Code Playgroud)
这两者都会产生未使用的变量错误。-Werror 不会根据位置改变行为。
$ clang main.cpp -Werror -Wno-error=unused-variable -Wunused-variable
$ clang main.cpp -Werror -Wunused-variable -Wno-error=unused-variable
Run Code Online (Sandbox Code Playgroud)
第一个给出错误,第二个给出警告。这意味着 -Wno-error=* 与位置相关。(GCC 将为这两条线发出警告。)
-Werror 不交互或依赖于命令行上的警告。-Wno-error=warning 确实取决于其与 -Wwarning 的相对位置。
我对此非常满意。它应该写在某个地方(我可能错过了!)
| 归档时间: |
|
| 查看次数: |
527 次 |
| 最近记录: |