Derleyici Uyarısı (düzey 4) C4456
'identifier' bildirimi önceki yerel bildirimi gizler
Yerel kapsamda tanımlayıcı bildirimi, aynı ada ait önceki yerel bildirimin bildirimini gizler. Bu uyarı, yerel kapsamdaki tanımlayıcıya yapılan başvuruların amacınız olabilecek veya olmayan önceki yerel sürüme değil, yerel olarak bildirilen sürüme çözümlendiğini bilmenizi sağlar. Bu sorunu çözmek için, yerel değişkenlere diğer yerel adlarla çakışmayan adlar vermenizi öneririz.
Örnek
Aşağıdaki örnek C4456 oluşturur çünkü döngü denetim değişkeni int x
ve içindeki member_fn
yerel değişken double x
aynı adlara sahiptir. Bu sorunu çözmek için yerel değişkenler için farklı adlar kullanın.
// C4456_hide.cpp
// compile with: cl /W4 /c C4456_hide.cpp
struct S {
void member_fn(unsigned u) {
double x = 0;
for (int x = 0; x < 10; ++x) { // C4456
u += x; // uses local int x
}
x += u; // uses local double x
}
} s;