Partilhar via


Aviso do compilador (nível 4) C4456

declaração de 'identificador' oculta declaração local anterior

Observações

A declaração de identificador no âmbito local oculta a declaração da declaração local anterior com o mesmo nome. Este aviso informa que as referências ao identificador no escopo local referem-se à versão declarada localmente, não ao local anterior, o que pode ou não ser intencional. Para corrigir esse problema, recomendamos que você forneça nomes de variáveis locais que não entrem em conflito com outros nomes locais.

Example

O exemplo a seguir gera C4456 porque a variável int x de controle de loop e a variável double x local in member_fn têm os mesmos nomes. Para corrigir esse problema, use nomes diferentes para as variáveis locais.

// 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;