-std=c++11 在 g++ 命令行中的位置

Posted

技术标签:

【中文标题】-std=c++11 在 g++ 命令行中的位置【英文标题】:Position of -std=c++11 in g++ command line 【发布时间】:2016-04-01 12:25:43 【问题描述】:

我只是好奇标准选择开关的位置(我的情况是-std=c++11)是否与 g++ 命令行相关。原因如下:

g++   -ftest-coverage -fprofile-arcs -std=c++11 
      -ansi -fpermissive -finline-functions -Wno-long-long
      -fvisibility-inlines-hidden -m64 -Wall -Wextra 
      -g -o CMakeFiles/common.dir/cryptoclass.cpp.o 
      -c /home/work/common/cryptoclass.cpp

不编译,而如下:

g++   -ftest-coverage -fprofile-arcs
      -ansi -fpermissive -finline-functions -Wno-long-long
      -fvisibility-inlines-hidden -m64 -Wall -Wextra 
      -g -o CMakeFiles/common.dir/cryptoclass.cpp.o 
      -std=c++11  -c /home/work/common/cryptoclass.cpp

编译。唯一的变化是-std=c++11 被移到了开关的末尾。

g++ 给出以下警告:

error: #error This file requires compiler and 
       library support for the ISO C++ 2011 standard. 
       This support is currently experimental, and must 
       be enabled with the -std=c++11 or -std=gnu++11 compiler options.

版本:

g++ (Ubuntu 4.8.4-2ubuntu1~14.04) 4.8.4

【问题讨论】:

我总是将-std=... 设为编译器的第一个选项并且工作正常。 【参考方案1】:

根据documentation,-ansi 选项启用 c++-98/c++-03 标准。

如果您设置多个标准选项,则后一个选项会覆盖前一个选项。这同样适用于其他互斥选项,例如优化级别。

【讨论】:

以上是关于-std=c++11 在 g++ 命令行中的位置的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Windows 的命令行中使用 MinGW 编译器?

OS实验2-1 课堂练习2.1 外部中断

WINDOWS 2000 SEVER 命令行中都有哪些命令

Unix命令行中的Ctrl + Z和Ctrl + C的区别

命令行中的关键字导出?

linux 命令行中 几个高效快捷键