我正在尝试将我的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编译器选项来启用。
标志(或编译器选项)只是传递给编译器可执行文件的普通命令行参数。
假设您正在从命令行(终端)调用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
。