最近我写了一个 Clang-tidy 命名检查,检查用户定义变量的名称是否以 '_' 字符开头。
但是我发现编译器在处理某些表达式时会定义一些变量。
例如:</p>
int main() {
int arr[3] = {0, 1, 2};
for(auto &i : arr) {
i++;
}
}
在处理'for(auto &i : arr)'表达式时,编译器将分别定义三个名为'__begin1、__end1、__range1'的变量,这与我的命名检查相匹配,但我想忽略这些编译器定义的变量。
warning: variable_v name '__begin1' should not start with '_' [readability-ks-variable-naming]
for(auto &i : arr) {
^
warning: variable_v name '__end1' should not start with '_' [readability-ks-variable-naming]
warning: variable_v name '__range1' should not start with '_' [readability-ks-variable-naming]
for(auto &i : arr) {
^
如何在 Clang AST 中仅识别用户定义的变量?