Condividi tramite


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.