用g ++编译c ++ 14代码

时间:2015-08-12 12:35:14

标签: c++ g++ ubuntu-14.04 c++14

我在Ubuntu 14.04 LTS上使用g ++ 4.8.4。当尝试使用'-std = c ++ 14'进行编译时,我收到此错误:

g++: error unrecognized command line option '-std=c++14'

使用'-std = c ++ 11'编译工作正常,所以我不确定发生了什么。 g ++真的不支持c ++ 14吗?我使用了错误的命令行选项吗?

我用过“sudo apt-get install g ++”这应该会自动检索最新版本,这是正确的吗?

4 个答案:

答案 0 :(得分:53)

对于gcc 4.8.4,您需要在更高版本中使用-std=c++1y,看起来从5.2开始,您可以使用-std=c++14

如果我们查看gcc online documents,我们就可以找到每个gcc版本的手册,我们可以通过Dialect options for 4.9.3下的GCC 4.9.3 manual查看:

  

“C ++ 1Y”

     
    

ISO C ++标准的下一版本,暂定于2014年计划。支持是高度实验性的,并且几乎肯定会在未来版本中以不兼容的方式发生变化。

  

所以4.9.3你需要使用-std=c++1ygcc 5.2 options说:

  

“C ++ 14”   “C ++ 1Y”

     
    

2014年ISO C ++标准加上修正案。不推荐使用名称“c ++ 1y”。

  

我不清楚为什么会在Options Controlling C Dialect下列出,但这就是目前文件的组织方式。

答案 1 :(得分:14)

GCC 4.8不支持-std=c++14标志。如果要使用C ++ 14功能,则需要使用-std=c++1y进行编译。使用godbolt.org似乎支持-std=c++14的最早版本是GCC 4.9.0或Clang 3.5.0

答案 2 :(得分:4)

G ++确实通过-std=c++14-std=c++1y支持C ++ 14。后者是该标准的通用名称,然后才知道它将在哪一年发布。在旧版本(包括您的版本)中,只接受后者,因为发布这些版本时发布年份尚不清楚。

  

我用过" sudo apt-get install g ++"应该自动检索最新版本,这是正确的吗?

它安装了Ubuntu存储库中提供的最新版本,而不是现有的最新版本。

最新的GCC版本是5.2。

答案 3 :(得分:1)

按照https://gist.github.com/application2000/73fd6f4bf1be6600a2cf9f56315a2d91上的说明在Ubuntu 14.04上设置所需的gcc版本-gcc 5或gcc 6。这些说明包括配置update-alternatives以允许您根据需要在版本之间进行切换。