Upozornění kompilátoru (úroveň 4) C4456
Deklarace identifikátoru skryje předchozí místní deklaraci.
Deklarace identifikátoru v místním oboru skryje deklaraci předchozí místní deklarace stejného názvu. Toto upozornění vás upozorní, že odkazy na identifikátor v místním oboru se přeloží na místně deklarovanou verzi, nikoli na předchozí místní, což může nebo nemusí být vaším záměrem. Pokud chcete tento problém vyřešit, doporučujeme zadat názvy místních proměnných, které nejsou v konfliktu s jinými místními názvy.
Příklad
Následující ukázka generuje C4456, protože řídicí proměnná int x
smyčky a místní proměnná double x
mají member_fn
stejné názvy. Pokud chcete tento problém vyřešit, použijte pro místní proměnné různé názvy.
// 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;