☰
  • 首页
  • 规则分类
  • 项目介绍
search
•••

全局名称不应被覆盖

6.1.5 ID_hideGlobal
目录 › next › previous

局部、成员名称不应与全局或命名空间内的名称相同,否则干扰阅读,易引起误解。

示例:

extern int i;

void foo() {
    int i = 0;      // Non-compliant, hides the global ‘i’
    ....
}

class A {
    int i;          // Non-compliant, hides the global ‘i’
public:
    int bar() {
        return i;   // Which ‘i’?
    }
    ....
};

建议全局对象遵循统一的命名约定,如以“g_”开头,且名称长度不宜过短,可有效规避这类问题。

例外:

extern int i;

struct S {
    int i;   // Compliant
};

无成员函数的结构体或联合体成员可不受本规则限制。

参考

CWE-1109 MISRA C 2004 5.2 MISRA C 2012 5.3 MISRA C++ 2008 2-10-2
Copyright©2024 360 Security Technology Inc., Licensed under the Apache-2.0 license.