gcc请求显示或关闭warnings

3 篇文章 0 订阅

gcc可以用' -W'开始的选项请求许多特定的警告. 反之, 每个特定的警告选项也有一个以“- wno -”开头的否定形式来关闭警告; 具体选项参见:
Warning Options - Using the GNU Compiler Collection (GCC)

其中, 2个选项值得注意:

-w
Inhibit all warning messages.

-Werror
Make all warnings into errors.

-w 关闭所有warning, 而 -Werror 将所有warning视为error.

前者-w关闭所有warning自然需要慎用.

后者-Werror有些公司项目为了引起对warning的重视, 默认开启即不允许有任何warning, 为了让代码owner采取主动措施去规避由warning引起的编译error.

有几种方法去修改default -Werror引起的错误. 
1) 关闭-Werror选项, 这时将报出所有warning, 而这难免有掩耳盗铃之嫌.
2) 使用-Wno-xxx关闭特定的warning, 自然这些特定warning所引起error也fix了.
3) 个别error在编译器抱怨时, 并没有给出特定的type是什么, 诸如[-Werror]而不是[-Werror=xxx]:

infra/services/vpn/vpnu/vpnApiVpnuServer.c:93:13: error: function declaration isn't a prototype [-Werror=strict-prototypes]
 static void vpnuInitConfigData() {
             ^~~~~~~~~~~~~~~~~~
infra/services/vpn/vpnu/vpnApiVpnuServer.c:125: error: "ENCDATA_PASSWORD" redefined [-Werror]
 #define ENCDATA_PASSWORD "8vO5pEhS9zDKkB0888AGsCoAnd8gTLE7"

此时可能既无法用-Wno-xxx关闭特定的warning, 如果同时关闭-Werror也是不妥当的话, 那么对于这类error本身, gcc的warning选项并不能cover到. 这时考虑修改base code去fix这类错误.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值