C6246
avviso C6246: La dichiarazione locale di <variabile> nasconde la dichiarazione con lo stesso nome in ambito esterno. Per informazioni aggiuntive vedere la dichiarazione precedente alla riga <posizione>.
L'avviso indica che due dichiarazioni hanno lo stesso nome in corrispondenza dell'ambito locale. Tale nome è nascosto dalla dichiarazione in corrispondenza dell'ambito interno. Qualsiasi utilizzo previsto della dichiarazione di ambito esterno avrà come risultato l'impiego della dichiarazione locale.
Esempio
Il codice seguente genera questo avviso:
#include <stdlib.h>
#define UPPER_LIMIT 256
int DoSomething( );
int f( )
{
int i = DoSomething( );
if (i > UPPER_LIMIT)
{
int i;
i = rand( );
}
return i;
}
Per risolvere il problema, utilizzare un ulteriore nome variabile come illustrato nel codice seguente:
#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;
}
}
L'avviso identifica solo una sovrapposizione di ambiti.