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;
}
}
此警告仅识别范围重叠。