带有 `-std=c++0x` 的 `#include <iostream>` 已损坏
Posted
技术标签:
【中文标题】带有 `-std=c++0x` 的 `#include <iostream>` 已损坏【英文标题】:`#include <iostream>` with `-std=c++0x` is broken 【发布时间】:2011-01-17 13:33:38 【问题描述】:如果我将-std=c++0x
指定给g++,那么我不能#include <iostream>
。我收到以下错误消息(mingw 下的 g++ 4.4.0):
In file included from c:\qt\2010.05\mingw\bin\../lib/gcc/mingw32/4.4.0/include/c++/bits/postypes.h:42,
from c:\qt\2010.05\mingw\bin\../lib/gcc/mingw32/4.4.0/include/c++/iosfwd:42,
from c:\qt\2010.05\mingw\bin\../lib/gcc/mingw32/4.4.0/include/c++/ios:39,
from c:\qt\2010.05\mingw\bin\../lib/gcc/mingw32/4.4.0/include/c++/ostream:40,
from c:\qt\2010.05\mingw\bin\../lib/gcc/mingw32/4.4.0/include/c++/iostream:40,
from f.cpp:1:
c:\qt\2010.05\mingw\bin\../lib/gcc/mingw32/4.4.0/include/c++/cwchar:159: error: '::swprintf' has not been declared
c:\qt\2010.05\mingw\bin\../lib/gcc/mingw32/4.4.0/include/c++/cwchar:166: error: '::vswprintf' has not been declared
任何想法为什么?这在最新的 g++ 中是否已修复? (如果是这样,有人知道如何将最新的 g++ 合并到 Qt 中吗?)
【问题讨论】:
如果您删除 '-std=c++0x',编译器会告诉您什么? 这看起来像是 MinGW 的 C++ 库/头文件中的错误,而不是 G++ 中的错误。 @Simone:没有-std=c++0x,我没有问题。 看看是否适用:***.com/questions/3445312/… 【参考方案1】:好像是bug。有一个带有简单补丁的thread(最后)。
【讨论】:
谢谢!那行得通。 (您可能想在答案中将“路径”编辑为“补丁”。)【参考方案2】:if win32
QMAKE_CXXFLAGS += -std=gnu++0x
else
QMAKE_CXXFLAGS += -std=c++0x
【讨论】:
以上是关于带有 `-std=c++0x` 的 `#include <iostream>` 已损坏的主要内容,如果未能解决你的问题,请参考以下文章
为啥我不能在 C++0x 中对 std::shared_ptr 的向量执行 std::copy?
c++11 统一初始化不适用于“g++ -std=c++0x”
如何在eclipse makefile项目的编译器选项中设置-std=c++0x?