在Qt中应用脚的GCC密钥进行投影时出现很多警告

tro*_*ane 2 c++ qt gcc mingw compiler-warnings

介绍

不久前,我发现学究的GCC密钥很有用,并且可以建议我编写更简洁的代码。当我编写简单的控制台C ++应用程序并使用参数进行编译时:

-Wall -Wextra -pedantic -Weffc++ -Wold-style-cast
-Wconversion -Winit-self -Wunreachable-code
Run Code Online (Sandbox Code Playgroud)

(在这里是完全记录所有这些信息:选项来请求或禁止警告选项控制C ++方言


问题

现在,我将Qt 4.8.4与MinGW编译器结合使用来构建应用程序。问题是当我在.pro-file下一行添加内容时:

QMAKE_CXXFLAGS += -Wall -Wextra -pedantic -Weffc++ -Wold-style-cast
QMAKE_CXXFLAGS += -Wconversion -Winit-self
Run Code Online (Sandbox Code Playgroud)

我从Qt的来源(而不是我的来源)收到很多警告。


具有.pro-file中上面编写的参数的简单Qt GUI项目给出了517条警告,例如:

D:\ Qt \ 4.8.4 \ src \ corelib \ global \ qglobal.h:981:警告:基类'struct QIntegerForSize <4>'具有非虚拟析构函数[-Weffc ++]

D:\ Qt \ 4.8.4 \ src \ corelib \ tools \ qpoint.h:174:警告:从“ int”转换为“ float”可能会更改其值[-Wconversion]

...

等等。


如何避免将学究参数应用于Qt的源,而仅在我的代码中使用该参数?

Oli*_*rth 5

如果使用GCC的-isystem标记将它们标记为系统标题,则不会看到警告。(另请参见http://gcc.gnu.org/onlinedocs/cpp/System-Headers.html)。

  • 是的 你是完全正确的!在我的情况下(在Windows上),我通过添加QMAKE_CXXFLAGS + = -isystem“ D:\\ Qt \\ 4.8.4 \\ include” QMAKE_CXXFLAGS + = -Wall -Wextra -pedantic -Wold-style使其可以正常工作播送QMAKE_CXXFLAGS + = -Wconversion -Winit-self到我的`.pro`文件。非常感谢! (2认同)