如何在GCC中屏蔽所有警告但仍正常上报错误
GCC 编译选项说明
- 你对
-w参数的效果存在认知偏差:GCC 中-w的原生作用仅为屏蔽所有警告信息输出,不会拦截任何编译错误的上报。如果你使用-w后没有看到错误输出,优先排查两种常见场景:- 你的代码本身无编译错误,原本的编译输出只有警告,添加
-w后警告被隐藏,导致你误以为错误也被屏蔽 - 你的编译参数中同时启用了
-Werror,该参数会把所有警告转为错误上报,添加-w关闭警告后,这部分由警告转换而来的错误也会同步消失,容易被误认为是正常编译错误被屏蔽
- 你的代码本身无编译错误,原本的编译输出只有警告,添加
- 如果你需要的就是完全关闭所有警告、仅保留编译错误输出,直接使用
-w参数即可,无需搭配其他额外参数。 - 如果后续你需要只开启特定某几种警告、关闭其余所有警告,可以在
-w之后追加对应警告的开启参数,例如-w -Wreturn-type就会关闭全部警告,仅保留返回值类型不匹配的警告输出。
内容的提问来源于stack exchange,提问作者Nishit Patel
相关产品推荐
相关产品推荐

