C6246
Ostrzeżenie C6246: lokalna deklaracja <variable> ukrywa deklarację o takiej samej nazwie w zewnętrznym zakresie.Informacje dodatkowe: Zobacz poprzednią deklarację w <location>.
To ostrzeżenie wskazuje dwie deklaracje o takiej samej nazwie w zakresie lokalnym.Nazwa w zewnętrznym zakresie jest ukryta przez deklarację w zakresie wewnętrznym.Wszelkie próby użycia deklaracji zewnętrznego zakresu spowodują wykorzystanie lokalnej deklaracji.
Przykład
Poniższy kod generuje to ostrzeżenie:
#include <stdlib.h>
#define UPPER_LIMIT 256
int DoSomething( );
int f( )
{
int i = DoSomething( );
if (i > UPPER_LIMIT)
{
int i;
i = rand( );
}
return i;
}
Aby poprawić to ostrzeżenie, użyj innej nazwy zmiennej, jak pokazano w poniższym kodzie:
#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;
}
}
Ostrzeżenie to identyfikuje tylko nakładanie się zakresów.