Как элегантно преодолеть бессмысленные предупреждения компилятора C ++?

Этот вопрос не связан с каким-либо конкретным предупреждением компилятора, ниже приводится лишь пример.

В настоящее время, когда мне нужен цикл, который проверяет условие выхода внутри:

 while( true ) {
    doSomething();
    if( condition() ) {
       break;
    }
    doSomethingElse();
}

Я не могу просто написать это в Visual C ++ - он выдаст предупреждение C4127 условное выражение is constant . Компилятор махнет им мне в лицо, хотя совершенно очевидно, что while (true) не могло быть написано случайно.

Предположим, мне нужен код, который компилируется без предупреждений. К моим услугам обходных путей .

Обходной путь - использовать для (;;) , но это кажется глупым - зачем мне эта странная вещь вместо лаконичного элегантного идиоматического while (true) ? Второй способ - использовать #pragma warning (suppress) перед строкой while (true) , но при этом добавляется огромный баннер, который вдвое больше, чем ], а - само утверждение. Третий способ обхода - отключить C4127 для всего проекта (я видел это в реальном проекте), но тогда все возможные полезные экземпляры C4127 также отключаются.

Есть ли элегантный способ избавиться от бессмысленного предупреждения?

27
задан sharptooth 15 November 2011 в 08:47
поделиться