컴파일러 경고(수준 4) C4457
'identifier' 선언은 함수 매개 변수를 숨깁니다.
로컬 범위에서 식별자 선언은 이름이 동일한 함수 매개 변수의 선언을 숨깁니다. 이 경고는 로컬 범위의 식별자에 대한 참조가 의도일 수도 있고 그렇지 않을 수도 있는 매개 변수가 아니라 로컬로 선언된 버전으로 확인된다는 것을 알 수 있습니다. 이 문제를 해결하려면 매개 변수 이름과 충돌하지 않는 지역 변수 이름을 지정하는 것이 좋습니다.
예시
다음 샘플에서는 매개 변수 x
와 지역 변수 x
member_fn
의 이름이 같기 때문에 C4457을 생성합니다. 이 문제를 해결하려면 매개 변수 및 지역 변수에 다른 이름을 사용합니다.
// 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;