cppcoreguidelines-avoid-non-const-global-variables

根据 C++ 核心指南 I.2 中的描述,查找非 const 全局变量。由于 C++ 核心指南 R.6 是规则 I.2 的副本,因此它也涵盖了该规则。

char a;  // Warns!
const char b =  0;

namespace some_namespace
{
    char c;  // Warns!
    const char d = 0;
}

char * c_ptr1 = &some_namespace::c;  // Warns!
char *const c_const_ptr = &some_namespace::c;  // Warns!
char & c_reference = some_namespace::c;  // Warns!

class Foo  // No Warnings inside Foo, only namespace scope is covered
{
public:
    char e = 0;
    const char f = 0;
protected:
    char g = 0;
private:
    char h = 0;
};

变量 acc_ptr1c_const_ptrc_reference 都将生成警告,因为它们要么是非 const 全局可访问变量,要么是指向或引用非 const 数据的指针或引用,或者两者都是。

选项

AllowInternalLinkage

当设置为 true 时,静态非 const 变量和匿名命名空间中的变量不会生成警告。默认值为 false