Поделиться через


Предупреждение компилятора (уровень 4) C4457

Объявление идентификатора скрывает параметр функции

Объявление идентификатора в локальной области скрывает объявление параметра функции с одинаковым именем. Это предупреждение позволяет узнать, что ссылки на идентификатор в локальной области разрешаются в локально объявленную версию, а не параметр, который может быть вашим намерением. Чтобы устранить эту проблему, рекомендуется указать имена локальных переменных, которые не конфликтуют с именами параметров.

Пример

В следующем примере возникает ошибка C4457, так как x параметр и локальная переменная x имеют member_fn одинаковые имена. Чтобы устранить эту проблему, используйте различные имена параметров и локальных переменных.

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