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

объявление идентификатора скрывает предыдущее локальное объявление

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

Пример

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

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