前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >号外号外:无规矩不成方圆

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

作者头像
用户1605515
发布2018-04-10 11:24:00
6860
发布2018-04-10 11:24:00
举报
文章被收录于专栏:嵌入式程序猿嵌入式程序猿

所谓无规矩不成方圆,嵌入式软件开发一样,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;

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-04-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 嵌入式程序猿 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档