注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Mihooke's blog

IT之恋

 
 
 

日志

 
 

消除工程中第三方库的警告  

2018-01-06 08:37:43|  分类: C/C++ |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
我们都知道编译器在编译程序阶段都会对程序进行合法性的检查,如果不合法则会报出error信息,导致编译不能通过;同时也会进行合理性检查,如果某些语句不合理,则会报出warning信息,通常warning不影响编译生成汇编代码和可执行文件,但是warning信息通常都是友好的,出现warning,一般是代码中有潜在的问题,下面是常见的warning:
  • 未使用函数参数(Unsed function parameter)
  • 定义了从未使用过的变量(Variable defined but never used)
  • 变量使用前未经初始化(Variable be used without being initialized)
  • 不是所有的分支都能正确return
  • 有符号数和无符号数不匹配
通常我们在编译项目的时候,都会把警告等级调到最高,比如在vs2015下消除工程中第三方库的警告 - mihooke - Mihookes blog
 会选中启用所有警告,同样在Qt Creator下的pro文件中,我们也会加上 /Wall来开启最高等级警告,目的就是为了防止由于失误导致的隐藏性错误。
截至到这一步,所有操作都是正确的,并且是推荐的做法,直到某一天,我们的项目,需要引入第三方库,比如Boost,Eigen等等,写好程序,再次编译程序你会发现信息栏会输出一大堆的warning信息,特别是有符号数和无符号数不匹配,但是我们也不能去修改第三方库啊,指不定会出现什么样的奇怪的错误导致编译错误呢。既想关掉第三方库的警告信息,但是需要在自己的项目中继续启用所有警告,那怎么办?
有一个办法:创建一个头文件,这个头文件包含第三方库的头文件,并在这个头文件中选择性地关闭某些warning,项目中统统include这个头文件,下面是个示例:
比如第三方库头文件eigen/eigen.h
新建my_eigen.h
#pragma warning(push) // 仅禁用此头文件
#pragma warning(disable:4100) // 4100就是未使用函数参数
#include "eigen/eigen.h"
#pragma warning(pop) // 恢复最初的warning级别

再次编译,会发现整个世界都清静了!
  评论这张
 
阅读(39)| 评论(0)

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018