我正在使用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 ++",应该会自动检索最新版本,这正确吗?
我正在使用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 ++",应该会自动检索最新版本,这正确吗?
对于gcc 4.8.4
,您需要使用-std=c++1y
。从5.2
开始,您可以使用-std=c++14
。
如果我们查看在线文档,我们可以找到每个版本的gcc手册,并且通过转到4.9.3方言选项下的GCC 4.9.3手册,我们可以看到它说:
'c++1y'
ISO C ++标准的下一个修订版,计划于2014年。支持是高度实验性的,并且几乎肯定会在未来的发布中以不兼容的方式进行更改。
直到版本 4.9.3
,您必须使用 -std=c++1y
,而 gcc 5.2 options 中说:
‘c++14’ ‘c++1y’
2014年ISO C++标准及其修订版。名称‘c++1y’已被弃用。
我不清楚为什么这被列在了“控制C语言方言选项”下,但目前文档就是这样组织的。
在GCC 4.8版本中不支持-std=c++14
标志。如果要使用C++14功能,则需要使用-std=c++1y
进行编译。通过godbolt.org,似乎最早支持-std=c++14
的版本是GCC 4.9.0或Clang 3.5.0。
-std=c++14
和-std=c++1y
进行编译。在发布C++14标准之前,-std=c++1y
是该标准的通用名称。旧版本(包括您使用的版本)只接受后者作为发布年份尚未确定时发布的版本。我使用了“sudo apt-get install g++”命令,这会自动获取最新版本,这正确吗?
它会安装Ubuntu存储库中可用的最新版本,而不是存在的最新版本。sudo aptitude install g++-6
。在那里,现在默认的软件包名称为“g++”,版本为5.x。 - underscore_dupdate-alternatives
以允许您根据需要切换版本。请确保严格按照格式要求进行操作,并保留所有html标签。
-std=c++1y
,它已更改为-std=c++14
,我认为是在5.2版本中。 - Shafik Yaghmour