软件编程规范(MISRA-C).pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

软件编程规范

目录

一环境

二语言扩展

三文档

四字符集

五标识符

六类型

七常

八声明与定义

九初始化

十数值类型转换

十一指针类型转换

十二表达式

十三控制语句表达

-4

十四控制流

十五switch语句

十六函数

十七指针和数组

十八结构与联合

十九预处理指令

二十标准库

二十运行时错误

环境

规则1.1(强制):所有代码都必须遵照ISO9899:1990°Programminglanguages-C,

由ISOIEC9899COR1:1995,ISOIEC9899AMD1:1995,和ISOIEC9899心OR2:1996修订。

规则1.2(强制):不能有对未定义行为或未指定行为的依赖性。这项规则要求暂可对未定义行为或未指定

行为的依赖,除车在其他规则中做了特殊说明,都

应该避免.如果其他某项规则中声明了某个特殊行为,那么就只有这项特定规则在其需要时

给出背离性。

规则1.3(强制):多个编译器和/或语言只能在为语言/编译器/汇编器所适合的目标代码定义了暹用接口

标准时使用。

如果一个模块是以非C语言实现的或是以不同的C编译器编译的,那么必须要保证该模块能够正确地同其

他模块集成.C语言行为的某些特征依赖于编译器,于是这些行为必须能够为使用的编译器所理解。例

如:栈的使用、参数的传递和数据值的存储方式(长度、排列、别名、益盖,等等).

规则1.4(强制):编译器/链接器要确保31个有效字符和大〃与敏感能被外部标识符支持。

ISO标准要求外部标识符的头6个字符是截然不同的。然而由于大多数编译器/链接器允许至少31人有效

字符(如同内部标识符),因此对这样严格而并不具有帮助性的限制的适应性被认为是不必要的O

必须检直编译器/链接器具有这种特性,如果编译器/链接器不能满足这种限制,就使用编译器本身的约

束。

规则1.5(建议):浮点应用应该适应于已定义的浮点标准浮点运算会带来许多问题,一些问题(而不是

全部)可以通过适应已定义的标准来克服。其中一个合适的标准是ANSIIEEEStd754[21]。

同规则6.3相一致,浮点类型的定义提供了一个注释所用浮点标准的机会,如:

*IEEE754single-precisionfloating-point7typedeffloatfloat32_t;

二语言扩展

规则2.1(强制):汇编语言应该被封装并隔离。

在需要使用汇编指令的地方,建议以如下方式封装并隔离这些指令:(a)汇编函数(b)C函数

(c)宏。

出于效率的考虑,有时必须要嵌入一些简单的汇编指令,如开关中断。如果不管出于什么原因需要这样

做,那么最好使用宏来完成。

需要注意的是,内嵌的汇编语言的使用是对标准C的扩展,因此也需要提出对规则1.1的背离。

#defineNOPasm(NOP);

规则2.2(强制):源代码应亥使用*,7类型的注释。

这排除了如/这样C99类型的注释和C++类型的注

文档评论(0)

zhuifengshaonian + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档