C6326C6326

ADVERTENCIA C6326: posible comparación de una constante con otra constantewarning C6326: potential comparison of a constant with another constant

Esta advertencia indica una posible comparación de una constante con otra constante, que es código redundante.This warning indicates a potential comparison of a constant with another constant, which is redundant code. Debe comprobar para asegurarse de que la intención se ha capturado correctamente en el código.You must check to make sure that your intent is properly captured in the code. En algunos casos, puede simplificar la condición de prueba para lograr el mismo resultado.In some cases, you can simplify the test condition to achieve the same result.

EjemploExample

El código siguiente genera esta advertencia porque se comparan dos constantes:The following code generates this warning because two constants are compared:

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

En el código siguiente se muestra una manera de corregir esta advertencia mediante el if constexprde C++ 17.The following code shows one way to correct this warning by using 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...
  }

En el código siguiente se muestra una manera de corregir esta advertencia mediante el uso de las instrucciones #ifdef para determinar qué código se debe ejecutar si C++ 17 no está disponible:The following code shows one way to correct this warning by using the #ifdef statements to determine which code should execute if C++17 is unavailable:

#define LEVEL
const int STD_LEVEL = 5;

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

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