Compartilhar via


C6246

Aviso C6246: Declaração de local de <variable> oculta a declaração de mesmo nome no escopo externo. Informações adicionais: Consulte a 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 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, 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.