Avviso C6326

Confronto potenziale di una costante con un'altra costante

Osservazioni:

Questo avviso indica un potenziale confronto di una costante con un'altra costante, ovvero codice ridondante. È necessario verificare che la finalità sia acquisita correttamente nel codice. In alcuni casi, è possibile semplificare la condizione di test per ottenere lo stesso risultato.

Nome dell'analisi del codice: CONST_CONST_COMP

Esempio

Il codice seguente genera questo avviso perché vengono confrontate due costanti:

#define LEVEL
const int STD_LEVEL = 5;

const int value =
#ifdef LEVEL
  10;
#else
  5;
#endif

void f()
{
  if( value > STD_LEVEL)
  {
    // code...
  }
  else
  {
    // code...
  }
}

Il codice seguente illustra un modo per correggere l'avviso usando C++17 if constexpr.

#define LEVEL
const int STD_LEVEL = 5;

const int value =
#ifdef LEVEL
  10;
#else
  5;
#endif

void f()
{
  if constexpr( value > STD_LEVEL)
  {
    // code...
  }
  else
  {
    // code...
  }

Il codice seguente illustra un modo per correggere questo avviso usando le istruzioni #ifdef per determinare il codice da eseguire se C++17 non è disponibile:

#define LEVEL
const int STD_LEVEL = 5;

const int value =
#ifdef LEVEL
  10;
#else
  5;
#endif

void f ()
{
#ifdef LEVEL
  {
    // code...
  }
#else
  {
    // code...
  }
#endif
}