首页 > 代码库 > MISRA C编程规范(一)

MISRA C编程规范(一)

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

规则1.1(强制):所有代码都必须遵照ISO9899:1990 “Programming languages -C ”,由ISO/IEC9899/COR1:1996修订。
规则1.2(强制):不能有对未定义行为或未指定行为的依赖性。
规则1.3(强制): 多个编译器和/或语言只能在语言/编译器/汇编器所适合的目标代码定义了通用接口标准时使用。
规则1.4(强制):编译器/链接器要确保31个有效字符和大小写敏感能被外部标识符支持。
规则1.5(建议):浮点应用应该适应于已定义的浮点标准

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

n规则2.1(强制):汇编语言应该被封装并隔离。
n规则2.2(强制):源代码应该使用/*.......*/类型的注释
n规则2.3(强制):字符序列/*不应该出现在注释中
n规则2.4(建议):代码段不应被“注释掉”

文档强制规则有五条建议一条
n规则3.1(强制):所有实现定义(implementation-defined)的行为的使用都应该文档化。
n规则3.2(强制):字符集和相应的编码应该文档化
n规则3.3(建议):应该确定、文档化和重视所选编译器中整数除法的实现
n规则3.4(强制):所有#pragma指令的使用应该文档化并给出良好解释
n规则3.5(强制):如果做为其他特性的支撑,实现定义(implementation-defined)的行为和位域(bitfields)集合应当文档化。
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(建议):具有静态存储期的对象或函数标识符不能重用。
n规则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长度。




MISRA C编程规范(一)