繁体   English   中英

如何在Linux中启用c ++ 11

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM