号外号外:无规矩不成方圆

所谓无规矩不成方圆,嵌入式软件开发一样,MISRA(Motor Industry Software Reliability Association),在软件设计中已经成为举足轻重的设计标准,保证软件的安全性,许多的软件质量度量工具都支持MISRA 的规则,所以我们来学习下MISRA的规则,提升你的嵌入式软件设计逼格。

每条规则都被分类成“强制”(required)或“建议”(advisory )所有强制的规则具有同等重要性,所有建议的规则也如此。

强制规则: 这是对程序员的强制要求,基本上共有121 条“强制”规则。

建议规则: 这些要求程序员在通常情况下都要遵守。然而它们不象强制规则那样带有强迫性质。一般共有20 条“建议”规则。要说明的是,“建议”不意味着可以忽略这些规则,而是应该遵守直至合理的实现。

首先来看看对开发环境的几条使用规则要求

不能有对未定义行为或未指定行为的依赖性。

这项规则要求任何对未定义行为或未指定行为的依赖,除非在其他规则中做了特殊说明,都应该避免。如果其他某项规则中声明了某个特殊行为,那么就只有这项特定规则在其需要时给出背离性

多个编译器和/ 或语言只能在为语言/ 编译器/ 汇编器所适合的目标代码定义了通用接口标准时使用。

如果一个模块是以非C 语言实现的或是以不同的C 编译器编译的,那么必须要保证该模块能够正确地同其他模块集成。C 语言行为的某些特征依赖于编译器,于是这些行为必须能够为使用的编译器所理解。例如:栈的使用、参数的传递和数据值的存储方式(长度、排列、别名、覆盖,等等)。

编译器/ 链接器要确保31 个有效字符和大小写敏感能被外部标识符支持

ISO 标准要求外部标识符的头6 个字符是截然不同的。然而由于大多数编译器/ 链接器允许至少31个有效字符(如同内部标识符),因此对这样严格而并不具有帮助性的限制的适应性被认为是不必要的。 必须检查编译器/ 链接器具有这种特性,如果编译器/ 链接器不能满足这种限制,就使用编译器本身的约束。

浮点应用应该适应于已定义的浮点标准

浮点运算会带来许多问题,一些问题(而不是全部)可以通过适应已定义的标准来克服。其中一个合适的标准是ANSI/IEEE Std 754 [21] 。浮点类型的定义提供了一个注释所用浮点标准的机会,如:

/* IEEE 754 single-precision floating-point */

typedef float float32_t;

一天不用学习很多,记住几条就行。

欢迎加入嵌入式程序猿,关注更多精彩内容,微信搜索嵌入式程序猿添加关注,或者直接扫描下方二维码关注。

000

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值