Предупреждение C6326

Потенциальное сравнение константы с другой константой

Замечания

Это предупреждение указывает на потенциальное сравнение константы с другой константой, которая является избыточным кодом. Необходимо проверка, чтобы убедиться, что намерение правильно записано в коде. В некоторых случаях можно упростить условие теста для достижения того же результата.

Имя анализа кода: CONST_CONST_COMP

Пример

Следующий код создает это предупреждение, так как сравниваются две константы:

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

В следующем коде показан один из способов исправления этого предупреждения с помощью 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...
  }

В следующем коде показано, как исправить это предупреждение с помощью инструкций #ifdef, чтобы определить, какой код должен выполняться, если C++17 недоступен:

#define LEVEL
const int STD_LEVEL = 5;

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

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