Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > [MSVC2008] нет warning на if ( true )


Автор: borisbn 21.9.2010, 16:45
Столкнулся с тем, что при warning level, установленным в 3 ( /W3 ) не генерятся warning'и типа 'condition is always true' и 'unreachable code' на следующий код:
Код

if ( true ) {
    foo1();
}
else {
    foo2();
}

Пробовал и в Debug и в Release.
Пробовал этот же код в Builder'е - выдаёт соответствующие warning'и.
То же самое ( в MSVC2008 без warning'ов, в Builder - с ними ) для кода
Код

while ( true ) {}


Вопрос:
можно ли как-нибудь включить эти warning'и, не переключаясь на 4-й уровень, потому что на этом уровне у меня Qt-шные h-ники компилируются с огромным количеством warning'ов, и найти там свои - просто нереально.
Спасибо.

Автор: icecrashldr 21.9.2010, 17:31
http://msdn.microsoft.com/en-us/library/zyhb0b82%28VS.80%29.aspx

Автор: borisbn 22.9.2010, 06:35
Спасибо. Буду пробовать. Но не хотелось использовать конструкции ( pragma warning ), которые не понимают другие компиляторы.
И ещё: я случайно набрёл на эти два warning'а, т.о. вполне может быть, что он мне не ругается и на другие вещи. Как бы это поуниверсальней решить, но без 4-го уровня?

Автор: Earnest 22.9.2010, 07:26
Подключить телепатический анализатор, который определит, какие ворнинги 4-го уровня тебя интересуют...
 smile 
А серьезно - что к какому уровню относить - личное дело компилятора, более-менее. 
Можешь еще проштудировать документацию на предмет списка всех предупреждений 4-го уровня и обрабатывай те, что тебе нужны.
Или, наоборот, хедеры QT оберни в enable\disable тех предупреждений, которые выдает библиотека. А в проекте включи 4-й уровень.
По-моему, через прагму можно не просто включить\выключить конкретное предупреждение, но и поменять ключи компилятора (чтобы временно выключить 4-й уровень).
А вообще-то 4-й уровень - это полная паранойя, по-моему. И некоторые 3-го уровня тоже, которые постоянно приходится отключать, например для буста.

Автор: borisbn 22.9.2010, 10:00
Цитата(Earnest @  22.9.2010,  07:26 Найти цитируемый пост)
Можешь еще проштудировать документацию на предмет списка всех предупреждений 4-го уровня и обрабатывай те, что тебе нужны.

Если не сложно, можешь дать ссылку на список warning'ов именно 4-го уровня ?
В MSDN они собраны каким-то идиотским способом - по возрастанию, т.е. все в перемешку - 1-го, 4-го ...
Существует ли список по категориям, а не по возрастанию кода warning'а ?

Цитата(Earnest @  22.9.2010,  07:26 Найти цитируемый пост)
А вообще-то 4-й уровень - это полная паранойя

полностью согласен. Хотя некоторые из них - вполне нормальные. Вот я и хочу посмотреть - какие включать руками, какие - нет

Автор: Earnest 22.9.2010, 11:27
Цитата(borisbn @  22.9.2010,  11:00 Найти цитируемый пост)
Если не сложно, можешь дать ссылку на список warning'ов именно 4-го уровня ?

нет, к сожалению... вроде когда-то видела, именно в MSDN, но давно, a они ведь все улучшают непрерывно...

Автор: icecrashldr 22.9.2010, 13:10
http://msdn.microsoft.com/en-us/library/ysb0wexw.aspx
http://msdn.microsoft.com/en-us/library/18kcz36b.aspx
http://msdn.microsoft.com/en-us/library/t460hcc3.aspx
http://msdn.microsoft.com/en-us/library/cfahxw6k.aspx

Вроде бы как все.

Автор: borisbn 22.9.2010, 13:14
icecrashldr, спасибо, конечно, я знаю об этих списках. Меня как раз и не устраивает, что 
Цитата(borisbn @  22.9.2010,  10:00 Найти цитируемый пост)
В MSDN они собраны каким-то идиотским способом - по возрастанию, т.е. все в перемешку - 1-го, 4-го ...

поэтому я и спрашивал
Цитата(borisbn @  22.9.2010,  10:00 Найти цитируемый пост)
Существует ли список по категориям, а не по возрастанию кода warning'а ?


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)