编译警告是否需要关闭

19 篇文章 1 订阅
10 篇文章 0 订阅

在软件开发中,经常遇到编译工具打印出的各种警告信息。

1>f:\mycode\cpptest\main.cpp(55): warning C4100: “argv”: 未引用的形参
1>f:\mycode\cpptest\main.cpp(55): warning C4100: “argc”: 未引用的形参
1>f:\mycode\cpptest\main.cpp(67): warning C4101: “a”: 未引用的局部变量
1>f:\mycode\cpptest\main.cpp(68): warning C4189: “nRet”: 局部变量已初始化但不引用


首先,编译警告信息是必需修复的。
无论编译警告信息产生的原因如何,作为一名软件开发人员,是应该尽力避免的。比较标准的做法是,根据警告信息,分析定位有问题的代码,通过修改有问题的代码,避免再次显示警告信息。

其次,如何关闭弹出编译警告信息。
有人主张通过修改编译工具的配置文件来关闭弹出编译警告信息。这样的操作,笔者认为要分情况看待。如果完全是自己编写代码造成的编译警告信息,通过修改编译工具配置文件关闭警告,有掩耳盗铃的嫌疑。这些警告信息在某些情况下,很可能发展为重大的bug。
但是,如是引用的第3方软件模块在编译过程里弹出的大量警告信息,并且你手中根本就没有源代码。这种情况,在和第3方沟通后,是可以自己想办法关闭的。那些第三方软件在编译过程里,弹出的大量警告信息,把整个工程的有意义的编译信息彻底淹没了。

再次,可否关闭整个项目的编译警告信息。
持有2个原则:
1. 尽量不修改第3方的软件代码;
一旦修改后,出现bug很难和第3方同步debug;并且以后升级,也会带入额外的diff部分,加大维护成本;
2. 尽量将关闭警告信息的作用范围降到最少;
如果把整个过程的编译警告信息都关闭了,当然简单干脆,但是万一自己的代码造成的警告信息也关闭了呢?这个应该尽量回避。

最后,关闭警告信息的具体方法
1. 推荐的关闭警告信息的方法。
仅仅关闭第3方的软件模块带入的编译警告。我方自己的代码如果有问题,依然会弹出编译警告信息。

#pragma warning(push)
#pragma warning(disable:4100)

int FuncXXX();   // invoke a 3th party API

#pragma warning(pop)

2. 通过修改QT-Creator的conf文件来关闭警告信息
请搜索网络,建议谨慎使用。
3. 屏蔽一个QT或者VC工程的编译警告信息
请搜索网络,建议谨慎使用。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值