Partilhar via


Aviso do compilador (nível 4) C4457

a declaração de 'identifier' oculta um parâmetro de função

A declaração do identifier no escopo local oculta a declaração do parâmetro de função de mesmo nome. Este aviso permite que você saiba que as referências a identifier no escopo local resolvem para a versão declarada localmente, não para o parâmetro, o que pode ou não ser a sua intenção. Para corrigir esse problema, recomendamos que você forneça nomes de variáveis locais que não entrem em conflito com nomes de parâmetros.

Exemplo

O exemplo a seguir gera o aviso C4457 porque o parâmetro x e a variável local x em member_fn têm os mesmos nomes. Para corrigir esse problema, use nomes diferentes para os parâmetros e variáveis locais.

// C4457_hide.cpp
// compile with: cl /W4 /c C4457_hide.cpp

struct S {
    void member_fn(unsigned x) {
        double a = 0;
        for (int x = 0; x < 10; ++x) {  // C4457
            a += x; // uses local x
        }
        a += x; // uses parameter x
    }
} s;