C6246
경고 C6246: <variable>의 지역 선언이 외부 범위에 있는 같은 이름의 선언을 숨깁니다. 추가 정보: <location>에 있는 이전 선언을 참조하십시오.
이 경고는 지역 범위에 있는 두 선언의 이름이 같다는 것을 나타냅니다. 외부 범위에 있는 이름은 내부 범위에 있는 선언에 의해 숨겨집니다. 외부 범위 선언을 사용하려고 해도 결과적으로 지역 선언이 사용됩니다.
예제
다음 코드에서는 이 경고를 발생시킵니다.
#include <stdlib.h>
#define UPPER_LIMIT 256
int DoSomething( );
int f( )
{
int i = DoSomething( );
if (i > UPPER_LIMIT)
{
int i;
i = rand( );
}
return i;
}
이 경고를 해결하려면 다음 코드에서처럼 다른 변수 이름을 사용합니다.
#include <stdlib.h>
#define UPPER_LIMIT 256
int DoSomething( );
int f ( )
{
int i = DoSomething( );
if (i > UPPER_LIMIT)
{
int j = rand( );
return j;
}
else
{
return i;
}
}
이 경고는 범위 겹침만 식별합니다.