Udostępnij za pośrednictwem


Ostrzeżenie kompilatora (poziom 4) C4457

deklaracja "identifier" ukrywa parametr funkcji

Deklaracja identyfikatora w zakresie lokalnym ukrywa deklarację identycznego nazwanego parametru funkcji. To ostrzeżenie informuje, że odwołania do identyfikatora w zakresie lokalnym rozpoznają lokalnie zadeklarowaną wersję, a nie parametr, który może być twoim zamiarem. Aby rozwiązać ten problem, zalecamy nadanie nazw zmiennych lokalnych, które nie powodują konfliktu z nazwami parametrów.

Przykład

Poniższy przykład generuje C4457, ponieważ parametr x i zmienna x lokalna w programie member_fn mają takie same nazwy. Aby rozwiązać ten problem, użyj różnych nazw parametrów i zmiennych lokalnych.

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