Advertencia del compilador (nivel 4) C4456
la declaración de "identifier" oculta la declaración local anterior
La declaración de identifier en el ámbito local oculta la declaración de la declaración local anterior del mismo nombre. Esta advertencia le permite saber que las referencias a identifier en el ámbito local se resuelven en la versión declarada localmente, no en la local anterior, que puede ser o no su intención. Para corregir este problema, se recomienda asignar nombres de variables locales que no entren en conflicto con otros nombres locales.
Ejemplo
El ejemplo siguiente genera la advertencia C4456 porque la variable int x
de control de bucle y la variable local double x
de member_fn
tienen los mismos nombres. Para corregir este problema, use nombres diferentes para las variables locales.
// 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;