Advertisement

MISRA C编程规范(一)

阅读量:

环境的有四条强制规则一条建议

规则1.1(强制):本手册的所有程序均应遵循国际标准 ISO 以及相关补充修订书进行编写。其中第二版修订自前一版本,并参考了最新的技术规范 ISO/IEC 及其相关的补充说明。

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

规则1.3(强制):多种不同的编译器与语言仅当它们对应的目标代码类型被定义为具有通用接口规范时才采用。

规则1.4(强制):编译器和链接器必须保证31个有效字符的大小写敏感性能够被外部标识符识别。

规则1.5(建议):浮点应用应该适应于已定义的浮点标准

语言拓展强制规则有3条一条建议

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

n规则2.2(强制):源代码应该使用/......./类型的注释

n规则2.3(强制):字符序列/*不应该出现在注释中

n规则2.4(建议):代码段不应被“注释掉”

文档强制规则有五条建议一条

第n条规定(强制性要求):在所有实现定义的情况下(无论是哪种情况),任何行为的应用都应被详细记录下来。

n规则3.2(强制):字符集和相应的编码应该文档化

n规则3.3(建议):应该确定、文档化和重视所选编译器中整数除法的实现

n规则3.4(强制):所有#pragma指令的使用应该文档化并给出良好解释

第n条规定(硬性要求):当它们作为其他特性的重要基础时,实现定义(implementation-defined)的行为以及相应的位域集合应确保文档化。

n规则3.6(强制):产品代码中使用的所有库均需符合本文档的要求,并且必须经过严格的审核流程。

字符集有两条强制规则

n规则4.1(强制):只能使用IOSC标准中定义的escape序列。

n规则4.2(强制):不能使用三个母词(trigraphs)。

标识符有四条强制规则建议3条

n规则5.1(强制):标识符(内部的外部的)的有效字符不能多于31。

n规则5.2(强制):在内作用域中定义的标识符应避免与外作用域中的相同名称重名,这会导致隐藏外作用域中的标识符。

n规则5.3(强制):typedef的名字应当是唯一的标识符。

n规则5.4(强制):标签(tag)名称必须是唯一的标识符。

n规则5.5(建议):具有静态存储期的对象或函数标识符不能重用。

第5.6条(作为建议)指出,在同一个命名空间中应避免出现与另一个命名空间中标识符拼写相同的情况,除非涉及结构体或联合体成员。

n规则5.7(建议):不能重用标识符名字

类型强制四条建议一条

n规则6.1(强制):单纯的char类型应该只用做存储和使用字符值

n规定项6.2(强制性):signedchar 和unsigned char类型仅用于数值存储和处理更为合适

n规则6.3(建议):应该使用指示了大小和符号的typedef以代表基本数据类型

n规则6.4(强制):位域只能被定义为unsignedint 或signed int类型

n规则6.5(强制):signedint 类型的位域至少应该为2bits长度。

全部评论 (0)

还没有任何评论哟~