• 欢迎大家交换友链,可在https://www.stubbornhuang.com/申请友情链接进行友链交换申请!

  • 如果觉得本站的内容有帮助,可以考虑打赏博主哦!

  • 本站由于前段时间遭受到大量临时和国外邮箱注册,所以对可注册的邮箱类型进行了限制!

  • 工资「喂饱肚子」,副业「养活灵魂」!

  • 计算机图形学与计算几何经典必备书单整理,下载链接可参考:https://www.stubbornhuang.com/1256/

  • 在本站开通年度VIP,无限制下载本站资源和阅读本站文章

  • 本站会放置Google广告用于维持域名以及网站服务器费用。

  • 问题反馈可发送邮件到stubbornhuang@qq.com

  • 感谢大家访问本站,希望本站的内容可以帮助到大家!

C++ – GCC版本与C++标准之间的对应关系

C++ 发布于2023-09-01 阅读 3,439次 0次评论 0次点赞 本文共1390个字,阅读需要4分钟。

1 GCC版本与C++标准的对应关系

C++到今年为止已经有了C++98、C++11、C++14、C++17、C++20,而C++23也于今年发布,而C++26也预计在2026年发布。目前在项目中一般是C++11作为标准,当然也有时会用到C++14和C++17的一些特性。

GCC是支持多种编程语言的编译套件,支持不同C++版本的编译,但是编译C++代码时需要找到正确的编译器,如果我们的项目中用的包含了C++14的部分特性,但是选择的GCC版本支持的最高版本是C++11,这个时候就会出现编译错误,或者在编译时不会出现编译错误,但是在运行时就会出现程序崩溃的问题。所以为了避免上述错误,弄清楚C++标准和编译器GCC版本之间的对应关系非常重要。

在GUN中GCC的这个页面详细介绍了GCC编译中对C++不同标准的支持,经过详细查看这个文档,我对C++标准和编译器GCC版本之间的对应关系进行了归纳,见下面这个表格

C++标准 GCC版本
C++98 C++98是GCC 6.1之前版本的默认C++语言标准,使用-std=c++98启用,如果要启用C++98功能之外的GNU扩展,则指定-std=gnu++98
C++11 GCC 4.8.1是C++11第一个功能完整的实现,使用-std=c++11启用,如果要启用C++98功能之外的GNU扩展,则指定-std=gnu++11。不过建议使用比GCC 4.8高的版本,建议使用GCC 6.1到GCC 10.0的版本,既支持C++11也支持C++14。
C++14 C++11是GCC 6.1到GCC 10.0(包含)的默认C++语言标准,使用-std=c++14启用,如果要启用C++98功能之外的GNU扩展,则指定-std=gnu++14
C++17 从GCC 11开始将C++17作为默认的C++语言标准,使用-std=c++17启用,如果要启用C++98功能之外的GNU扩展,则指定-std=gnu++17。一些C++17的功能从GCC 5就可用,但是只是实验性的,并不稳定,一直到GCC 9,C++17的功能才稳定下来。
C++20 C++20虽然已经发布3年了,但是GCC对C++20的支持还是处于实验性阶段,部分功能从GCC 8开始可用,使用-std=c++20启用功能(在GCC 9 以及更早版本则使用-std=c++2a),如果要启用C++20功能之外的GNU扩展,则需要添加-std=gnu20。
C++23 C++23的部分功能从GCC 11开始可用,但是GCC对C++23的支持也还是处于实验性阶段,使用-std=c++2b启用功能,如果要启用C++23功能之外的GNU扩展,则需要添加-std=gnu2b
C++26 GCC 对C++26标准的下一修订版提供实验性支持,预计将于 2026 年发布。

上表对C++标准和编译器GCC版本之间的对应关系进行了详细的梳理总结,对于当前项目中广泛使用的C++11标准代码的编译,建议使用GCC 10,既支持C++11也同时支持C++14,这和Visual Studio 2019的默认支持到C++14一样,如果项目跨平台且能够在Windows上在Visual Studio 2019上正确编译且运行,那么在Linux系统上使用GCC 10也可以正确编译和运行。

参考

欢迎扫码关注我的微信公众号,及时获取文章更新

微信公众号二维码

本文作者:StubbornHuang

版权声明:本文为站长原创文章,如果转载请注明原文链接!

原文标题:C++ – GCC版本与C++标准之间的对应关系

原文链接:https://www.stubbornhuang.com/2776/

发布于:2023年09月01日 11:40:07

修改于:2023年09月01日 11:40:07

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

文章末尾
上一篇
Javascript - 接收websocket服务器发送base64编码的音频数据并进行播放
Javascript
下一篇
Centos7 - 安装高版本的gcc/g++,多版本切换以及配置环境
Linux运维
当前分类随机文章推荐

发表评论

您必须 [ 登录 ] 才能发表留言!

关注我们的公众号

微信公众号