Partager via


Avertissement du compilateur (niveau 4) C4456

déclaration de 'identifier' masque la déclaration locale précédente

La déclaration d’identificateur dans l’étendue locale masque la déclaration de la déclaration locale précédente du même nom. Cet avertissement vous permet de savoir que les références à l’identificateur dans l’étendue locale sont résolues vers la version déclarée localement, et non la version locale précédente, qui peut ou non être votre intention. Pour résoudre ce problème, nous vous recommandons de donner des noms de variables locales qui ne sont pas en conflit avec d’autres noms locaux.

Exemple

L’exemple suivant génère l’erreur C4456, car la variable int x de contrôle de boucle et la variable double xmember_fn locale ont les mêmes noms. Pour résoudre ce problème, utilisez différents noms pour les 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;