C6246
Warnung C6246: Die lokale Deklaration von <Variable> blendet die Deklaration des gleichen Namens im äußeren Bereich aus. Weitere Informationen finden Sie in der früheren Deklaration in <Speicherort>.
Diese Warnung gibt an, dass zwei Deklarationen den gleichen Namen im lokalem Bereich aufweisen. Der Name im äußerem Bereich wird von der Deklaration im inneren Bereich ausgeblendet. Wenn die Verwendung der Deklaration im äußeren Bereich beabsichtigt ist, führt dies zur Verwendung der lokalen Deklaration.
Beispiel
Der folgende Code generiert diese Warnung:
#include <stdlib.h>
#define UPPER_LIMIT 256
int DoSomething( );
int f( )
{
int i = DoSomething( );
if (i > UPPER_LIMIT)
{
int i;
i = rand( );
}
return i;
}
Um diese Warnung zu korrigieren, verwenden Sie einen anderen Variablennamen, wie im folgenden Code gezeigt:
#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;
}
}
Diese Warnung weist lediglich auf eine Bereichsüberschneidung hin.