Avertissement du compilateur (niveau 4) C4456
la 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 x
member_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;