我正在尝试在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功能?
答案 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__
。