EffectiveC++-条款53:不要轻忽编译器的警告

一. 内容

  1. 许多程序员习惯性的忽略编辑器警告。它们认为:毕竟,如果问题很严重,编译器应该给一个错误信息而非警告信息,不是吗?

  2. 我们看一个例子:

     int a=1;
     if (a=1) {
          std::cout<<"Ohhh"<<"\n";
     }
    

    我想这是很多入门程序员都会犯的错误,将赋值的结果意外的作为条件判断,也许或者几乎作者是想写一个 == 而非 =,但编译器认为这并非什么语法错误,高级的编译器也许会给你一个 Using the result of an assignment as a condition without parentheses 警告。

    但是如果你不在乎,你的程序就会因为这些不是错误的警告而运行出错,然后是许多调试行为,只为找出这个其实编译器早就侦测出来的问题

  3. 一旦你了解了编译器的警告信息,知道不同的警告信息意味着什么,那么尽管我们认为一个没有警告的程序是最理想的,你也可以选择性的忽略某些警告信息。

    不管怎么说,面对警告信息时,你一定要清楚的了解它的真实含义,然后才可以选择性的处理或者忽略。

  4. 但是记住,警告信息天生和编译器相关,不同的编译器有不同的警告标准。所以,草率依赖编译器为你指出错误,并不可取。一些老旧的编译器面对同样的问题可能半句抱怨都没有。

二. 总结

  1. 严肃对待编译器发出的警告信息。努力在你的编译器的最高(最严苛)警告级别下争取无任何警告的荣誉。
  2. 不要过度倚赖编译器的报警能力,因为不同的编译器对待事情的态度并不相同。一旦移植到另一个编译器上,你原来倚赖的警告信息有可能消失。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值