自身初始化器中使用的变量¶
ID: cpp/use-in-own-initializer
Kind: problem
Security severity:
Severity: warning
Precision: high
Tags:
- maintainability
- correctness
Query suites:
- cpp-security-and-quality.qls
变量在其自身初始化器中处于范围内,但在首次赋值之前从中加载是未定义的行为。
建议¶
不要在变量自身的初始化器中使用该变量,除非它是地址计算或 sizeof
表达式的一部分。
示例¶
int f() {
int x = x; // BAD: undefined behavior occurs here
x = 0;
return x;
}
int g() {
int x = 0; // GOOD
return x;
}