在最近接触的新的项目,由于技术使用为C98风格实现,遇到一个问题需要加锁解决,本能反应用lock_gurad+mutex解决,但是没设置CFLAGS为C++11标准,不确定当前gcc编译器默认支持的C和C++标准是什么,索性就一把都研究透彻,方便后面查看和使用。纯手工一个一个查找标准对照的,十分耗时,多谢支持。
1、查看当前GCC的版本
首先要确认自己编译环境当前安装的gcc版本。
通过gcc --version查看,我自己电脑的编译版本如下:
2、支持版本的对应查找
然后到GCC官网(GCC Releases- GNU Project)查看对应的默认支持版本:
所以默认支持版本是C17标准
3、GCC所有版本支持C++和C语言情况
版本 |
发布时间 |
默认支持C标准 |
默认支持C++标准 |
GCC 13.1 |
April 26, 2023 |
C17 |
C++17 |
GCC 12.2 |
August 19, 2022 |
C17 |
C++17 |
GCC 10.4 |
June 28, 2022 |
C17 |
C++14 |
GCC 9.5 |
May 27, 2022 |
C17 |
C++14 |
GCC 12.1 |
May 6, 2022 |
C17 |
C++14 |
GCC 11.3 |
April 21, 2022 |
C17 |
C++17 |
GCC 11.2 |
July 28, 2021 |
C17 |
C++17 |
GCC 9.4 |
June 1, 2021 |
C17 |
C++14 |
GCC 8.5 |
May 14, 2021 |
C17 |
C++14 |
GCC 11.1 |
April 27, 2021 |
C17 |
C++17 |
GCC 10.3 |
April 8, 2021 |
C17 |
C++14 |
GCC 10.2 |
July 23, 2020 |
C17 |
C++14 |
GCC 10.1 |
May 7, 2020 |
C17 |
C++14 |
GCC 9.3 |
March 12, 2020 |
C17 |
C++14 |
GCC 8.4 |
March 4, 2020 |
C17 |
C++14 |
GCC 7.5 |
November 14, 2019 |
C11 |
C++14 |
GCC 9.2 |
August 12, 2019 |
C17 |
C++14 |
GCC 9.1 |
May 3, 2019 |
C17 |
C++14 |
GCC 8.3 |
February 22, 2019 |
C17 |
C++14 |
GCC 7.4 |
December 6, 2018 |
C11 |
C++14 |
GCC 6.5 |
October 26, 2018 |
C11 |
C++98 |
GCC 8.2 |
July 26, 2018 |
C17 |
C++14 |
GCC 8.1 |
May 2, 2018 |
C17 |
C++14 |
GCC 7.3 |
January 25, 2018 |
C11 |
C++14 |
GCC 5.5 |
October 10, 2017 |
C11 |
C++98 |
GCC 7.2 |
August 14, 2017 |
C11 |
C++14 |
GCC 6.4 |
July 4, 2017 |
C11 |
C++14 |
GCC 7.1 |
May 2, 2017 |
C11 |
C++14 |
GCC 6.3 |
December 21, 2016 |
C11 |
C++14 |
GCC 6.2 |
August 22, 2016 |
C11 |
C++14 |
GCC 4.9.4 |
August 3, 2016 |
C90 |
C++98 |
GCC 5.4 |
June 3, 2016 |
C11 |
C++98 |
GCC 6.1 |
April 27, 2016 |
C11 |
C++14 |
GCC 5.3 |
December 4, 2015 |
C11 |
C++98 |
GCC 5.2 |
July 16, 2015 |
C11 |
C++98 |
GCC 4.9.3 |
June 26, 2015 |
C90 |
C++98 |
GCC 4.8.5 |
June 23, 2015 |
C90 |
C++98 |
GCC 5.1 |
April 22, 2015 |
C90 |
C++98 |
GCC 4.8.4 |
December 19, 2014 |
C90 |
C++98 |
GCC 4.9.2 |
October 30, 2014 |
C90 |
C++98 |
GCC 4.9.1 |
July 16, 2014 |
C90 |
C++98 |
GCC 4.7.4 |
June 12, 2014 |
C90 |
C++98 |
GCC 4.8.3 |
May 22, 2014 |
C90 |
C++98 |
4、GCC对C++版本迭代支持情况
C++版本 |
GCC版本支持情况 |
GCC版本 |
指定版本的命令标志 |
C++98 |
完全支持 |
从GCC6.1之前版本的默认模式 |
-std=c++98 or std=gnn++98 |
C++11 |
完全支持 |
从GCC4.8.1版本完全支持 |
-std=c++11 or std=gnu++11 |
C++14 |
完全支持 |
从GCC6.1版本开始完全支持,从6.1-10(包括)的默认模式 |
-std=c++14 or std=gnu++14 |
C++17 |
完全支持 |
从GCC 5版本开始支持,到GCC 7版本已完全支持,是GCC 11到13版本的默认模式 |
-std=c++17 or std=gnu++17 |
C++20 |
未完全支持 |
从GCC 8版本开始支持 |
-std=c++20 or std=gnu++20(GCC 9以及之前版本使用-std=c++2a) |
C++23 |
未完全支持(标准开发中) |
从GCC 11版本开始支持 |
-std=c++2b or文章来源:https://www.toymoban.com/news/detail-457244.html std=gnu++2b文章来源地址https://www.toymoban.com/news/detail-457244.html |
到了这里,关于所有Gcc版本对C和C++的支持情况(超详细版本)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!