C6246
Aviso C6246: declaração de Local de <variable> oculta a declaração de mesmo nome no escopo externo.Informações adicionais: Consulte declaração anterior em <location>.
Este aviso indica que duas declarações têm o mesmo nome de escopo local.O nome do escopo externo está oculta pela declaração no escopo interno.Qualquer uso pretendido da declaração de escopo externo resultará no uso de declaração de local.
Exemplo
O código a seguir gera este aviso:
#include <stdlib.h>
#define UPPER_LIMIT 256
int DoSomething( );
int f( )
{
int i = DoSomething( );
if (i > UPPER_LIMIT)
{
int i;
i = rand( );
}
return i;
}
Para corrigir esse aviso, use outro nome de variável, conforme mostrado no código a seguir:
#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;
}
}
Este aviso só identifica uma sobreposição de escopo.