QT, предупреждающий предложение уровня

Каков уровень предупреждения, который Вы используете при компиляции спокойных проектов?

Когда я скомпилировал с W4, я получаю много предупреждений, таких как:

C4127: conditional expression is constant

Если я компилирую в W3 или нахожу другие способы обработать предупреждения в W4, такие как: добавление нового заголовочного файла и использование прагмы (упомянутый здесь Стандарты Кодирования C++: 101 Правило, Инструкции и Лучшие практики).

Каковы Ваши методы?

Спасибо.

6
задан metdos 30 April 2010 в 06:09
поделиться

2 ответа

Пару лет назад я столкнулся с точно такой же проблемой, что и у вас, а именно с установкой компилятора на 4 уровень предупреждений, чтобы отловить как можно больше потенциальных проблем. В то время у меня был контракт на поддержку с Qt, и я спросил их, почему их код выдает так много предупреждений. Они ответили, что никогда не гарантировали, что их код будет компилироваться без предупреждений. Только то, что их код будет работать правильно.

После нескольких попыток я начал окружать заголовочные файлы Qt прагмами, чтобы отключить предупреждения, как показано ниже -

#pragma warning(push,3)  // drop compiler to level 3 and save current level
#include <QString>
#include <QVariant>
#include <QStack>
#include <QLabel>
#include <QtGui/QTableWidget>
#pragma warning(pop)    // restore compiler warning level

Делая это таким образом, вы компилируете заголовочные файлы Qt только на нижнем уровне предупреждений. Или на любом другом уровне, чтобы избавиться от предупреждений. У вас могут быть отдельные предупреждения, которые все еще появляются, поэтому вы можете повысить уровень предупреждения или отключить отдельные предупреждения с помощью

#pragma warning(disable: 4700)

Некоторые файлы библиотеки Boost также имеют эту проблему.

11
ответ дан 8 December 2019 в 13:45
поделиться

Лично я просто использую Makefiles, которые qmake генерирует по умолчанию... исходя из предположения, что я могу доверять ребятам из Nokia в том, что они генерируют Makefiles, которые делают правильные вещи для текущей среды сборки.

Я вижу, что qmake принимает некоторые необязательные аргументы относительно предупреждений, хотя:

The level of warning information can be fine-tuned to help you find problems in your project file:

-Wall 
qmake will report all known warnings.
-Wnone 
No warning information will be generated by qmake.
-Wparser 
qmake will only generate parser warnings. This will alert you to common pitfalls and potential problems in the parsing of your project files.
-Wlogic 
qmake will warn of common pitfalls and potential problems in your project file. For example, qmake will report whether a file is placed into a list of files multiple times, or if a file cannot be found.
4
ответ дан 8 December 2019 в 13:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: