"); //-->
1,为什么容易忽略编译器的警告信息?
1)编程时处理各种error已经很让人恼火的了,error自然被放在次要位置;
2)绝大多数下,程序在存在warnings的情况下,在短期内可以正常运行,我们根本看不到错误,导致warning近一步被轻视;
3)没有养成好的工作习惯,带有warning的代码是不能交付的,而我们判断交付的标准中往往没有对代码提出更为细致的要求。
2,忽视编译警告往往会给我们造成重大损失
最近的一个项目中,我的程序在实验室测试了1个星期没有出现问题。当设备部署到现场3天后,坏事情终于发生了:设备依次出现死机问题。
再从头分析代码, 百思不得其解,痛不欲生的时候注意到了一个编译警告,说一个表达式一直为真。原来发生了下面的错误:
unsigned char i;
for( i = 0; i < 1000; i++) {.....}
变量类型的定义导致了表达式一直为真。为什么开始的测试中不会出现问题哪?原来,这段代码是必须程序运行一段时间后才会执行的一段代码,在短时间的测试中根本不会进入。
看来编程真不能偷懒,偷懒必遭惩罚,你还要费比当时偷懒省的劲多好多倍的劲来弥补,并且这个弥补的过程中你还要承受巨大的压力。跟平时多流汗战时少流血的道理一样的。
3)解决办法
给自己的编程增加一个规则,带有编译警告的代码不能交付。
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。