Unicorn with delicious cookie
Мы используем куки, чтобы пользоваться сайтом было удобно.
Хорошо
to the top
>
>
>
V785. Constant expression in switch...
menu mobile close menu
Проверка проектов
Дополнительная информация
toggle menu Оглавление

V785. Constant expression in switch statement.

18 Апр 2017

Анализатор обнаружил константное выражение в условии 'switch'. Чаще всего это сигнализирует о логической ошибке.

Рассмотрим синтетический пример:

int i = 1;
switch (i)
{
  ....
}

В качестве условия 'switch' стоит переменная, значение которой может быть посчитано во время компиляции. Такая ситуация могла возникнуть в результате рефакторинга: раньше был код, который менял значение переменной, а потом его поменяли и оказалось, что переменной больше не присваивается никакое значение.

Анализатор не выдаёт предупреждение, когда переменная константная или в условии используется макросы. Такие конструкции часто используют намеренно для включения/выключения функционала во время компиляции.

Например, могут выполняться различные действия, в зависимости от того для какой операционной системы скомпилирован код:

switch (MY_PROJ_OS)
{
case MY_PROJ_WINDOWS:
  ....
case MY_PROJ_LINUX:
  ....
case MY_PROJ_MACOS:
  ....
}

Данная диагностика классифицируется как: