Поделиться через


C6246

Примечание C6246: локальное объявление <переменной> скрывает объявление такого же имени во внешней области. Дополнительные сведения: см. предыдущее объявление в <расположении>.

Данное предупреждение означает, что два объявления имеют одно имя в локальной области видимости. Имя из внешней области скрыто объявлением во внутренней области. Любое преднамеренное использование объявления из внешней области приведет к использованию локального объявления.

Пример

Данное предупреждение создается в следующем коде:

#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;
  }
}

Данное предупреждение указывает только на наложение областей видимости.