Предупреждение компилятора (уровень 4) C4456
объявление идентификатора скрывает предыдущее локальное объявление
Объявление идентификатора в локальной области скрывает объявление предыдущего локального объявления того же имени. Это предупреждение позволяет узнать, что ссылки на идентификатор в локальной области разрешены локально объявленной версии, а не предыдущей локальной версии, которая может быть вашим намерением. Чтобы устранить эту проблему, рекомендуется указать имена локальных переменных, которые не конфликтуют с другими локальными именами.
Пример
В следующем примере возникает ошибка C4456, так как переменная элемента управления циклом и локальная переменная int x
double 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;