[英]how to enable c++11 in linux
我想在c ++中使用unordered_map STL,但是一旦使用标头,它就会给我这个错误:
此文件需要支持ISO C ++ 11标准的编译器和库。 该支持目前处于试验阶段,必须使用-std = c ++ 11或-std = gnu ++ 11编译器选项启用。
我在下面附加了我想运行的代码。 (也欢迎输入任何代码。谢谢)
#include <iostream>
#include <unordered_map>
using namespace std;
class Node
{
public:
string a,b;
Node()
{
a="hello";
b="world";
}
};
int main ()
{
unordered_map<Node> mymap;
Node mynode;
mymap.insert(mynode);
std::cout << "myrecipe contains:" << std::endl;
for (auto& x: mymap)
std::cout << x.a << ": " << x.b << std::endl;
}
编辑:我通过使用以下命令使其工作:g ++ -std = c ++ 11 [filename] .cpp
谢谢您的帮助。
问题的主要答案:在编译命令中指定-std=c++11
。
确切地,哪些C ++ 11功能可用取决于您的GCC版本。 以下两个链接可能会有所帮助:
第一种选择:
您可以在编译时使用-std=c++11
删除错误。
g++ -o binary yourFile.cpp -std=c++11
将开发与c ++ 11集成的第二个选择 :
您可以将带有CXXFLAGS的makefile与-std=c++11
一起使用-std=c++11
是一个简单的文本文件,其中包含有关如何编译程序的说明。 创建一个名为Makefile的新文件(大写M)。 要自动编译代码,只需在终端中键入make命令。 您可能必须安装make。
这是代码:
CXX=clang++
CXXFLAGS=-g -std=c++11 -Wall -pedantic
BIN=prog
SRC=$(wildcard *.cpp)
OBJ=$(SRC:%.cpp=%.o)
all: $(OBJ)
$(CXX) -o $(BIN) $^
%.o: %.c
$(CXX) $@ -c $<
clean:
rm -f *.o
rm $(BIN)
假定所有.cpp文件都与makefile位于同一目录中。 但是您可以轻松地调整makefile以支持src,include和build目录。
编译:
g++ -o binary source.cpp -std=c++11
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.