Compartir a través de


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;