提问者:小点点

用G++编译C++11


我正在尝试将我的C++编译器更新到C++11。我搜索了一下,我得出的结论是,我必须使用标志-std=C++0x-std=GNU++0x,但我不知道很多关于标志的事情。有人能帮我吗?(我使用的是Ubuntu 12.04.)

以下是我试图使用C++11中包含的库(即数组)时从编译器得到的错误:

#include <array>
#include <iostream>

int main()
{
    std::array<int, 3> arr = {2, 3, 5};
    ...
}

这个文件需要对即将到来的ISO C++标准C++0x的编译器和库支持。此支持目前处于实验阶段,必须使用-std=C++0x或-std=GNU++0x编译器选项来启用。


共3个答案

匿名用户

标志(或编译器选项)只是传递给编译器可执行文件的普通命令行参数。

假设您正在从命令行(终端)调用g++:

$g++-std=C++11 your_file.cpp-o your_program

$g++-std=C++0xyour_file.cpp-o your_program

如果上面的都不管用。

匿名用户

您可以通过命令检查g++:

which g++
g++ --version

这将告诉你当前它指向的是哪个编译器。

要切换到g++4.7(假设您已经在计算机中安装了它),请运行:

sudo update-alternatives --config gcc

There are 2 choices for the alternative gcc (providing /usr/bin/gcc).

  Selection    Path              Priority   Status
------------------------------------------------------------
  0            /usr/bin/gcc-4.6   60        auto mode
  1            /usr/bin/gcc-4.6   60        manual mode
* 2            /usr/bin/gcc-4.7   40        manual mode

然后选择2作为选择(我的机器已经指向g++4.7,因此*)

一旦切换了编译器,然后再次运行g++--version检查切换是否正确。

现在用编译程序

g++ -std=c++11 your_file.cpp -o main

匿名用户

你的Ubuntu肯定有一个足够新的g++版本。要使用的标志是-std=C++0x

相关问题


MySQL Query : SELECT * FROM v9_ask_question WHERE 1=1 AND question regexp '(g++|编译|c++11)' ORDER BY qid DESC LIMIT 20
MySQL Error : Got error 'repetition-operator operand invalid' from regexp
MySQL Errno : 1139
Message : Got error 'repetition-operator operand invalid' from regexp
Need Help?