Предупреждения о константном условии
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 24.05.20 03:12
Оценка: +1
В MS VC++ издавна есть предупреждение 4127 (conditional expression is constant). Удобная штука, помогает ловить ошибки вроде "if (Enabled && Allowed)", где один из операндов является константой, равной false. Но мешает использовать конструкции вроде "while (true)" или "do ... while (false)" — для них приходится делать костыли.

Сейчас обнаружил, что из компиляторов версии 19 его выпилили для явных констант. То есть, "while (true)" предупреждения не вызывает, но и "while (false)" или "if (false)" тоже проходят на ура, и никаких тебе "unreachable code". Самое смешное, что при отключенной оптимизации для них генерится что-то вроде

    xor    eax, eax
    je    SHORT $LN2@f

        <здесь код из if/while>

Принудительно включить предупреждение в этих случаях невозможно — ни /Wall, ни __pragma (warning) не помогают.

Это только MS так развлекается, или "по всей стране началось"?
ms vc++ visual c++ microsoft conditional expression constant warning true false while if
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.