C/C++提高代码稳定性/健壮性的一些小细节

1.宏定义一定要加括号

        尤其是宏定义不是单项的时候,因为宏定义在预编译的时候编译器就是对它进行简单的替换,加了括号可以更加保证替换完之后不会产生我们预料不到的情况

2.函数的输入参数要检查

        尤其对于指针和需要在函数中被减的传参,指针需要判断是否为空,需要被减的判断是否大于减数;函数对输入参数做了检查就相当于保证了外部给的条件是没问题的,此时如果出问题就是函数内部的问题了,这样就缩减了出BUG时的检查范围了。

3.多用枚举类型

        对于某些变量,其值只会在一定的范围内的(如0-2,1-6,10-20)则对其定义个枚举类型,这样编译器会对其进行检查,一旦发现其值超过范围会报错,发现可能会超过范围则报警告;要多学会利用编译器来提前发现问题

4.多用static

        无论是对于函数还是变量,只要是外部不会用到的都加static;还有就是能作为局部变量的就别定义成全局的,即便是局部静态变量(都别定义成全局的)

5.多用const

        对于指针则涉及其指向的值是否可变和指针本身(指向的地址)是否可变的问题,所以定义指针的时候需要考虑两个const,如果都不可变的话那就都加const,如:cont int *const pot; 对于非指针则相对简单了,只需要考虑其本身是否可变就行了

6.多用volatile

        volatile的核心意思是:告诉编译器该变量是很重要的,所以在涉及对该变量操作和该变量相关的代码的时候别进行优化,如读写该变量的时候要从其源地址读写而别使用备份

7.volatile const也是有意义的

        这点很重要,很多人以为const的变量已经是不可变了,再加volatile就没啥意义了(不会涉及读写),但是,加了const只是表示程序不可改变它的值,不代表编译器不可以,所以加const还是有意义的(编译器在涉及对它的操作的时候会从其源地址读写)

总结:从以上罗列的点来看,很多都是跟编译器相关的,要么就是利用编译器要么就是防着编译器,大家不要见怪,对于C/C++编程本来就是要摸透两大块,一个是编译器,另一个是相应处理器的内核和外设的知识和特性,这其中编译器是比较容易被忽视的。
  • 8
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值