C6246
Aviso C6246: Declaração de local de <variável>oculta declaração do mesmo nome no escopo externo.Informações adicionais: Consulte declaração anterior em <location>.
Este aviso indica que duas declarações tenham o mesmo nome no escopo local.O nome no escopo externo fica oculto por declaração no escopo interno.Qualquer uso pretendido da declaração de escopo externo irá 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 sistema autônomo 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.