c语言不安全库_功能安全编程:C语言编程错误原因探究

没有任何一种编程语言能够保证最终生成的执行代码能完全表达程序员的意图. C语言不能例外.

程序员的过错

程序员犯错的机会很多,从简单的错误拼写变量名到对复杂算法的误解.编程语言自身的特点对这种情况有一定的责任. 首先语言本身的风格与表达方式能对程序员起到帮助的同时也会引起一些理解阻碍.其次语言本身会导致错误拼写更容易发生.最后编程语言本身并非能完全侦测到这种错误.

由于C语言的风格与表达方式较为自由, 程序员可以设计出结构清晰,表达生动的代码, 也可以写出晦涩难懂的代码. 如果将功能安全作为重要的设计目标, 后者显然是不能接受的风格.

C语言的语法使得程序员能够写出合乎规则但是完全与设计目标背道而驰的代码. 比如:

if(a==1)

...

if(a=1)

...

又比如:

if(bFlag)

doSomeThing();

if(bFlag);

doSomeThing();

即是语法灵活所导致的经常性的编程错误.

C语言的哲学在于:程序员都是聪明的,能够明白自己在做什么. 所以语言本身侦测错误的能力较弱. 比较突出的一点是C语言在类型检测上基本上不做任何努力. 比如将浮点数赋值给整型变量. 大多数此类错误会被语言使用强制转换的手段隐藏. 如果给C编译器一个方形的插件和一个圆形过孔, 它也不会抱怨,只会默默地使之彼此兼容!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值