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;
};
变量 a
、c
、c_ptr1
、c_const_ptr
和 c_reference
都将生成警告,因为它们要么是非 const 全局可访问变量,要么是指向或引用非 const 数据的指针或引用,或者两者都是。
选项¶
- AllowInternalLinkage¶
当设置为 true 时,静态非 const 变量和匿名命名空间中的变量不会生成警告。默认值为 false。