bugprone-reserved-identifier¶
cert-dcl37-c 和 cert-dcl51-cpp 将此作为该检查的别名。
检查对保留供实现使用的标识符的用法。
C 和 C++ 标准都保留以下名称供此类使用:
以下划线后跟一个大写字母开头的标识符;
在全局命名空间中以下划线开头的标识符。
C 标准还保留以双下划线开头的名称,而 C++ 标准将此加强为保留任何位置出现双下划线的名称。
违反上述命名规则会导致未定义的行为。
namespace NS {
void __f(); // name is not allowed in user code
using _Int = int; // same with this
#define cool__macro // also this
}
int _g(); // disallowed in global namespace only
该检查也可以反转,即它可以配置为标记任何不是保留标识符的标识符。此模式供例如标准库实现者使用,以确保他们不会侵犯用户命名空间。
该检查还没有检查其他保留名称,例如与语言关键字相同的宏名称,以及语言标准专门保留的名称,例如 C++ 的“僵尸名称”和 C 未来库方向。
此检查对应于 CERT C 编码标准规则 DCL37-C。不要声明或定义保留标识符,以及其 C++ 对等项, DCL51-CPP。不要声明或定义保留标识符。
选项¶
- Invert¶
如果为 true,则反转检查,即标记不是保留的名称。默认值为 false。
- AllowedIdentifiers¶
检查忽略的正则表达式的分号分隔列表。默认情况下为空列表。