使用Qt Creator的C ++ 0x

时间:2011-02-15 12:18:07

标签: c++ qt c++11 mingw qt-creator

我正在尝试在Windows(Qt Creator 2.0.1)下的Qt Creator中使用新的C ++ 0x功能。

我阅读了 Configuring the GCC compiler switches in Qt, Qt Creator, and QMake 帖子,并将QMAKE_CXXFLAGS += -std=c++0x添加到.pro文件中。

之后Qt Creator在这个简单的代码上给出了非常奇怪的错误:

#include <memory>

int main()
{
}

编译器错误:

  

':: swprintf'尚未声明

     

':: vswprintf'尚未声明

我尝试使用命令g++ test.cpp --std=c++0x从命令行编译我的代码并得到相同的错误。

那么Qt MinGW编译器有什么问题?是否可以在Qt Creator中使用C ++ 0x功能?

1 个答案:

答案 0 :(得分:3)

首先,可能是库标题不能正确表示它们的依赖关系。尝试将#include <cstdio>和(不幸的)using namespace std;添加到顶部的文件中。

如果不这样,有几个人似乎遇到了MinGW和swprintf的问题。 This mailing list post建议添加以下内容:

#ifdef WIN32
#define swprintf _snwprintf
#endif

看看是否能解决问题。 (你也希望它在文件的最顶层。)

如果在您的源代码中添加随机定义对您来说似乎是一个坏主意,我建议使用-D构建标志在您在MinGW上构建时有条件地注入上面的定义。

另请参阅this short discussion有关MinGW与其他编译器的swprintf之间的差异。

最后,失败的所有其他内容,this link似乎将问题归因于在MinGW中启用__STRICT_ANSI__的标志问题,并建议在其中一个MinGW标头中注释掉几行来修复问题。如果您决定使用此黑客,我建议在它们周围添加一个更简单的#ifndef __STRICT_ANSI__