周记-开启-Werror,让把警告当作错误处理

gcc/g++开启-Werror

项目代码是老古董了,编译时警告比较多,达到上千个,一个是qt版本的升级,老版本的函数进行了更新,就产生了过期的警告。开启-Werror后,强迫把产生警告的代码修改掉,修改代码的过程中,也学到了一些知识。
开启这个选项有很多好处,让可能存在的bug消除掉。比如头文件包含的警告,如果没有包含函数对应的头文件,链接时可能找错,在不同平台上程序的行为表现可能不同,因此警告信息还是不能忽略。
主要的警告有以下几项:

  • 未使用的参数。通过函数体内在参数前添加(void),qt中使用Q_UNUSED宏,两者是一样的。
  • 使用过时的函数。改成新版本的函数。
  • QObject在拷贝构造函数中没有显式初始化。显式调用构造函数。
  • 不同数据类型的变量比较。改成相同类型,或者进行强制类型转换。这种情况在数值的边界情况下是比较容易出现bug的。

串口通信干扰

仪器中有个氙灯闪光灯,开启闪光的时候,对核心板的HMI板接收数据存在干扰,干扰期间会一直收到7f,数据位是7,应该和这个有关系。闪光开始和结束后的1秒内,这期间存在干扰。这样就造成了软件产生了通信报警,后来修改了软件的报警策略,连续多次通信出错后,再进行报警。同时后续可能会对结构上添加屏蔽层。大概率原因是氙灯板更新了。

《程序设计实践》

这本书中有2章是对解决bug的描写。有个观点让我印象比较深,就是聪明的程序员能够从每个发现的bug中学到知识,这样就不断加强了技能,而一般水平的程序员仅仅是为了解决bug,从来不会学到教训。大概是这个意思,具体的语言记不清楚了。

产品迭代中的软件管理

有个项目,机型是支持多种机型,研发是一个机型一个机型的进行研发,而软件只用一套代码,这样造成的情况是,如果机型一,机型二已经发布了,现在正在研发机型三,那前面机型需要变更时,也要把变更内容同步到正在开发的机型三代码中。同时,机型三新增的需求也会存在于前面的机型中,每次测试也需要测试所有支持的机型。这种做法感觉只是方便了代码开发,对于整个项目的管理,似乎有些混乱。

gdb使用心得

调试器是观察程序行为的利器,发现程序与预期不符,需要掌握常用法,而单纯的学习是掌握不了的,需要在实践使用中,碰到了什么问题,然后去学习gdb怎么使用这项功能,在实践中学习。像教员说的:学习是学习,实践也是学习。这是比较快速掌握gdb的方法。还有一个原因是,gdb太强大了,功能太多了,这也是一个方面。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值