Advertencia C6326

Comparación potencial de una constante con otra constante

Comentarios

Esta advertencia indica una posible comparación de una constante con otra constante, que es código redundante. Debe asegurarse de que la intención se capture correctamente en el código. En algunos casos, puede simplificar la condición de prueba para lograr el mismo resultado.

Nombre del análisis de código: CONST_CONST_COMP

Ejemplo

El código siguiente genera esta advertencia porque se comparan dos constantes:

#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...
  }
}

El código siguiente muestra una manera de corregir esta advertencia mediante 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...
  }

El código siguiente muestra una manera de corregir esta advertencia mediante las instrucciones #ifdef para determinar qué código debe ejecutarse si C++17 no está disponible:

#define LEVEL
const int STD_LEVEL = 5;

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

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