响旗命令
clang W flag order
本文关键字:命令 更新时间:2023-10-16
我注意到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会编译这两行。
我的回答是:
我认为更好的标题是-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
这两种方法都会给出一个未使用的变量错误。-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的相对位置有关。
我完全可以接受。它应该写在某个地方(我可能错过了!)
相关文章:
- 从命令行c++发送文本文件名
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 使用QProcess执行命令,并将结果存储在QStringList中
- 数组长度,为什么从命令行获取时不能使用它?
- 如果用户输入无效,如何使用字符串变量-C++重复输入命令
- clang整洁10忽略了我的NOLINT命令
- 在子目录中使用target_sources()命令时用于单元测试(qtest)的项目结构
- 如何处理linux终端中带有负号(-)的C++中的命令行参数
- VS Code "command":"make"与终端窗口中的命令行"make"不同
- 使用VS Code和CMake Tools运行自定义命令
- 如何使用ESP8266向谷歌主页发送命令
- 如何使 windows 命令提示符在C++可执行文件上显示返回值?
- 未定义的引用 .. 使用 OpenCV 编译 C++ 代码时,从命令行
- 通过 Openssl 命令行加密,通过 c++ 解密
- CMake "--target install"无需"--build"命令行
- Gstreamer 管道从命令 lne 到 c 代码
- 自动"yes"到 Popen SSH 命令
- 更改命令行 qt5 源代码构建配置的正确/快速方法