编译QT项目时使用的警告级别是多少?
当我使用W4编译时,我收到了很多警告,例如:
C4127: conditional expression is constant
我应该在W3编译,还是找到其他方法来处理W4中的警告,例如:添加新的头文件并使用编译指示(此处提到C编码标准:101规则,指南和最佳实践).
你的做法是什么?
谢谢.
解决方法
我遇到了几年前你遇到的完全相同的问题,那就是将编译器设置为4级警告以尽可能多地捕获一些问题.当时,我与Qt签订了一份支持合同,并问他们为什么他们的代码会产生如此多的警告.他们的反应是,他们从不嘲笑他们的代码会在没有任何警告的情况下编译.只有他们的代码才能正确运行.
经过几次尝试后,我开始使用pragma包围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库文件也有这个问题.