局部名称不应被覆盖
6.1.3 ID_hideLocal
不应在嵌套的作用域中声明相同的名称,否则干扰阅读,极易引起误解。
示例:
int foo() {
int i = 0; // Declares an object ‘i’
if (cond) {
int i = 1; // Non-compliant, hides previous ‘i’
....
}
return i;
}
在一个函数中出现了多个名为 i 的变量,当实际代码较为复杂时,很容易出现意图与实现不符的问题。
参考
CWE-1109
C++ Core Guidelines ES.12
MISRA C 2004 5.2
MISRA C 2012 5.3
MISRA C++ 2008 2-10-2