MISRA-C编码标准解读:Rule 5.1至Rule5.7【标识符】

前言

标识符,包括变量名、函数名、类型名等,是编程语言中用来区分和引用程序元素的基本构造单元。良好的标识符命名实践是确保代码可读性、可维护性和可靠性的关键因素之一。本文基于MISRA-C手册进行学习和总结标识符相关规则。文末附参考文献地址。

规则 5.1(必须): 标识符(内部和外部)不应依赖于超过31个字符的意义

解释: 此规则要求内部标识符(即在文件内部定义的标识符)必须在其前31个字符内保持唯一性,以确保代码的可移植性。该规则适用于所有命名空间,包括宏名,且31字符的限制在替换前后均适用。
注意:易混淆的字符如1(数字一)与l(小写字母L)、0与O、2与Z、5与S、n与h应谨慎使用。

规则 5.2(必须): 内层作用域中的标识符不应使用外层作用域中标识符的相同名称,从而隐藏外层标识符

解释: “外层作用域”指的是具有文件作用域的标识符,而“内层作用域”指的是具有块作用域的标识符。当内层定义覆盖了外层定义时,才构成违规。

示例: 如果使用了第三方库,应在文档中列出该库的版本,确认其与MISRA-C标准的兼容性,并记录任何必要的验证测试结果。

int i; // 外层定义
{
   
    int i; // 内层定义,隐藏了外层的i,不合规
    i = 3;     // 可能导致混淆,不清楚引用的是哪一个'i'
}

规则 5.3(必须): 类型定义名应当是一个唯一的标识符

解释: 此规则要求类型定义名(typedef 名称)必须在整个程序中是唯一的,不得在任何地方被重用,无论作为其他 typedef 名称还是用于任何其他目的。即使在不同的源文件中,也不允许出现相同的类型定义,即使它们的声明完全相同。当类型定义在头文件中声明,且该头文件被多个源文件包含时,不违反此规则。

示例:


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值