如何让G++仅将窄化转换类警告转为编译错误而非全部警告
解决方法
GCC 提供了精准升级单类警告为错误的参数格式 -Werror=<警告标识名>,不需要全局开启 -Werror 影响所有警告。
针对你遇到的浮点数转换警告:
- 警告提示中已经标注了对应的警告标识为
Wfloat-conversion,因此只需添加编译参数-Werror=float-conversion即可单独将这类警告转为编译错误。
使用如下编译命令即可实现需求:
g++ test.cpp -o test -Wconversion -Werror=float-conversion
执行后原来的警告会直接升级为编译错误,打断编译流程:
test.cpp: In function ‘int main(int, char**)’: test.cpp:6:17: error: conversion from ‘double’ to ‘int’ may change value [-Werror=float-conversion] 6 | int b = 2.0 * a; cc1plus: some warnings being treated as errors
如果需要将所有类型转换相关的警告(包括整数符号转换、整数窄化等)都升级为错误,可以将参数替换为 -Werror=conversion,同样不会影响其他类型的警告。
内容的提问来源于stack exchange,提问作者Luiz Doleron
相关产品推荐
相关产品推荐

