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