C语言编程十大建议——语法语义篇:使用脚本检查部分语义错误

1.亲核字符串、数组操作之越界与否。不然,很可能出现程序可以编译通过,但是最终却给出了错误的结果。另外指针和数组的越界访问,很容易出发segment fault

2.不要重写标准库函数,把函数名改成你自己才懂得的晦涩的名字,遵循一种统一的编程规范

3.在书写switch case和定义相同结构的变量的时候,如果为了少手动来写一部分代码,直接采用复制粘贴的形式,那么很有可能你的某个便另定义是错误的(直接copy了钱一个变量的值,而没有做对应的修改)。

4.scanf后面没有加&,switch中漏掉break,=和==的误用

5.使用一些危险的,有可能产生越界的库函数,例如gets等。

6.多加或者少用了分号,while后if后面,会导致逻辑错误。

7.函数的声明最好和定义分离,函数要先声明,后使用

8.循环边界的确定,边界的+1还是-1,从循环中出来以后值是多少,往往是一些关键节点。


当程序的逻辑和你预想的逻辑不符的时候,想想什么地方可能出现问题:其中,4、5、6三点是最容易出现问题的地方;如何避免这类问题浪费掉大量调试时间呢?写一个脚本,每次都检查这几个地方!


给一个sed脚本,可以检测for、while、if后面多加的分号问题:

  1 #n
  2 /^[\ \t]*if/{
  3     /);/p
  4 }
  5 
  6 /^[\ \t]*while/{
  7     /);/p
  8 }
  9 
 10 
 11  /^[\ \t]*for/{
 12     /);/p
 13 }

更多的语法正确而语义错误的例子,可以参考: http://blog.csdn.net/ipmux/article/details/17350933


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值