Этот вопрос не связан с каким-либо конкретным предупреждением компилятора, ниже приводится лишь пример.
В настоящее время, когда мне нужен цикл, который проверяет условие выхода внутри:
while( true ) {
doSomething();
if( condition() ) {
break;
}
doSomethingElse();
}
Я не могу просто написать это в Visual C ++ - он выдаст предупреждение C4127 условное выражение is constant
. Компилятор махнет им мне в лицо, хотя совершенно очевидно, что while (true)
не могло быть написано случайно.
Предположим, мне нужен код, который компилируется без предупреждений. К моим услугам обходных путей .
Обходной путь - использовать для (;;)
, но это кажется глупым - зачем мне эта странная вещь вместо лаконичного элегантного идиоматического while (true)
? Второй способ - использовать #pragma warning (suppress)
перед строкой while (true)
, но при этом добавляется огромный баннер, который вдвое больше, чем ], а
- само утверждение. Третий способ обхода - отключить C4127 для всего проекта (я видел это в реальном проекте), но тогда все возможные полезные экземпляры C4127 также отключаются.
Есть ли элегантный способ избавиться от бессмысленного предупреждения?