为了账号安全,请及时绑定邮箱和手机立即绑定

用g+编译C+11

/ 猿问

用g+编译C+11

C++
aluckdog 2019-07-22 10:37:50

用g+编译C+11

我正在尝试将我的C+编译器更新为C+11。-std=c++0x-std=gnu++0x但我对旗子不太了解。有谁可以帮我?(我使用的是Ubuntu12.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 回答

?
慕姐829404

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

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

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

$ g++ -std=c++0x your_file.cpp -o your_program

如果上面的方法不起作用的话。


查看完整回答
反对 回复 2019-07-22
?
ABOUTYOU

你可以检查你的g++命令:

which g++g++ --version

这将告诉你,哪个编辑目前是它的指向。

切换到g++4.7(假设您已将其安装在计算机中),运行:

sudo update-alternatives --config gccThere 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


查看完整回答
反对 回复 2019-07-22
?
慕村225694

如果希望保留GNU编译器扩展,请使用-std=gnu+0x而不是-std=c+0x。下面是手册页的引文:

编译器可以接受一些基本标准,如c89或c+98,以及这些标准的GNU方言,例如gnu 89或gnu+98。通过指定基本标准,编译器将接受所有遵循该标准的程序,以及那些使用GNU扩展而不与其相矛盾的程序。例如,-std=c89关闭GCC的某些与ISO C90不兼容的特性,例如“ASM”和“type of”关键字,但不关闭在ISO C90中没有意义的其他GNU扩展,例如省略“:”表达式的中间项。另一方面,通过指定标准的GNU方言,将启用编译器支持的所有功能,即使这些特性更改了基本标准的含义,并且一些严格符合标准的程序可能会被拒绝。考虑到该标准的版本,这个特定的标准用于识别哪些特性是GNU扩展。例如-std=gnu 89-peantic将警告C+样式/注释,而-std=gnu 99-peantic则不会。


查看完整回答
反对 回复 2019-07-22

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信