不能使用三字母词
三字母词由2 个问号序列后跟1 个确定字符组成(如, ??- 代表“ ~”(非)符号,而??)代表“]”符号)。它们可能会对 2 个问号标记的其他使用造成意外的混淆,例如字符串 “(Dateshould be in the form ??-??-??)” 将不会表现为预期的那样,实际上它被编译器解释为 “(Dateshould be in the form ~~)”
标识符(内部的和外部的)的有效字符不能多于 31。
ISO 标准要求在内部标识符之间前 31 个字符必须是不同的以保证可移植性。即使编译器支持,也不能超出这个限制。
ISO 标准要求外部标识符之间前 6 个字符必须是不同的(忽略大小写)以保证最佳的可移植性。然而这条限制相当严格并被认为不是必须的。本规则的意图是为了在一定程度上放宽ISO 标准的要求以适应当今的环境,但应当确保 31 个字符/大小写的有效性是可以由实现所支持的。
使用标识符名称要注意的一个相关问题是发生在名称之间只有一个字符或少数字符不同的情况,特别是名称比较长时,当名称间的区别很容易被误读时问题就比较显著,比如 1(数字 1)和 l( L 的小写)、0 和 O、 2 和 Z、 5 和 S,或者 n和 h。建议名称间的区别要显而易见。
具有内部作用域的标识符不应使用与具有外部作用域的标识符相同的名称,这会隐藏了外部标识符。
外部作用域和内部作用域的定义如下。文件范围内的标识符可以看做是具有最外部( outermost)的作用域;块范围内的标识符看做是具有更内部( more inner)的作用域;连续嵌套的块,其作用域更深入。本规则只是不允许一个第二深层( second inner)的定义隐藏其外层的定义,如果第二个定义没有隐藏第一个定义,那么就不算违反本规则。
其他跟代码相关的规则,可以在具体的工程中,打开MISRA规则验证分析代码时候,对应代码看规则,印象会比较深刻。在这里就不赘述了。建议大家查看最新的规则。这个系列到这里就结束了,欢迎各位的关注