使用预编译头方法时出现大量QT警告

时间:2017-06-23 15:04:44

标签: c++ qt precompiled-headers

由于编译速度变慢,我最近将项目切换为使用预编译头文件。在此之前,它没有任何重大警告。

但是,在我的项目中使用的所有QT标头(我使用40-50)添加到stdafx.h文件,在构建解决方案期间,stdafx.h文件生成时我收到了与QT功能相关的大量(1000)警告。特别是,我得到了很多“警告C4251”,例如

  

1> c:\ Qt \ 5.9 \ msvc2015_64 \ include \ QtGui / qrawfont.h(154):警告C4251:'QRawFont :: d':类'QExplicitlySharedDataPointer'需要客户端使用dll接口类'QRawFont'(编译源文件TitleBar.cpp)

另外两种常见警告类型(尽管少得多)是c4800和c4244。

我在运行VS2015的Windows 10机箱上使用64位QT 5.9。

我显然可以禁用它们,但如果不了解为什么会这样,我真的不想做这样的事情。

1 个答案:

答案 0 :(得分:0)

许多跨平台代码会产生警告。并不总是可以禁用它们,例如,如果参数未使用,一个编译器可能会发出警告,如果它被人为地用于关闭该警告,则另一个可能会警告无法访问的代码。然后MS警告C标准字符串库这样的东西,这通常是不切实际的。你必须记住MS和Apple对QT这样的东西有着非常复杂的感觉。他们想要的最后一件事就是销售用于运行QT应用程序的无差别平台。因此提供适当警告的动机不大。