mac c ++编译器找不到<tr1/unordered_map>

AqC*_*AqC 9 c++ macos

我想今天的问题是"哪个"c ++编译器是mac的默认值?

如果我这样做xcrun -find c++就说它在/Applications/Xcode.app/etc....

当我搜索Xcode目录时tr1/unordered_map,它就在那里.

所以我很困惑.为什么我会收到构建错误fatal error: 'tr1/unordered_map' file not found

Bre*_*nks 20

简短的回答:用clang ++打电话-stdlib=libstdc++,tr1标题就在那里.

答案很长: 你的错误和2套C++包含的原因是macOS/Xcode有两个不同的C++标准库你可以构建:旧的GNU libstdc++,以及新的和现代的LLVM libc++.

随着MacOS的10.12塞拉利昂的,默认的是现在libc++libstdc++已经过时了.libstdc++很老,v4.2.1,并且早于C++ 11(因此tr1标题).如果您将长期使用此代码,那么至少可以使其符合C++ 11标准(即#include <unordered_map>)