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