MISRA C++:2008 Rule 2-10-2
Identifiers declared in an inner scope shall not hide an identifier declared in an outer scope
描述
规则定义
Identifiers declared in an inner scope shall not hide an identifier declared in an outer scope. 1
理由
该规则标记在两个变量声明中使用了相同的标识符名称的情况,一个在外部范围,另一个在内部范围。
int var; ... { ... int var; ... }
在内部作用域中,该名称的所有使用都指在内部作用域中声明的变量。但是,开发人员或代码评审人员可能会错误地认为该用法是指外部范围内声明的变量。
Polyspace 实现
规则检查项会标记所有变量遮蔽的情况,包括以下情况:
相同的标识符名称在外部和内部命名命名空间中被使用。
同一个名称被用于类数据成员和类外的变量。
同一个名称在基类和派生类中用于表示同一个方法。
要排除这些情况,请切换到更现代的标准 AUTOSAR C++14,并检查规则 AUTOSAR C++14 Rule A2-10-1
。
故障排除
如果您预期会出现违规,而 Polyspace® 未报告该违规,请参阅诊断为何编码规范违规未按预期显示。
示例
检查信息
组:词法规范 |
类别:必需 |
版本历史记录
在 R2013b 中推出
1 All MISRA coding rules and directives are © Copyright The MISRA Consortium Limited 2021.
The MISRA coding standards referenced in the Polyspace Bug Finder™ documentation are from the following MISRA standards:
MISRA C:2004
MISRA C:2012
MISRA C:2023
MISRA C++:2008
MISRA C++:2023
MISRA and MISRA C are registered trademarks of The MISRA Consortium Limited 2021.