所有Gcc版本对C和C++的支持情况(超详细版本)
在最近接触的新的项目,由于技术使用为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++标准 |
April 26, 2023 |
C17 |
C++17 |
|
August 19, 2022 |
C17 |
C++17 |
|
June 28, 2022 |
C17 |
C++14 |
|
May 27, 2022 |
C17 |
C++14 |
|
May 6, 2022 |
C17 |
C++14 |
|
April 21, 2022 |
C17 |
C++17 |
|
July 28, 2021 |
C17 |
C++17 |
|
June 1, 2021 |
C17 |
C++14 |
|
May 14, 2021 |
C17 |
C++14 |
|
April 27, 2021 |
C17 |
C++17 |
|
April 8, 2021 |
C17 |
C++14 |
|
July 23, 2020 |
C17 |
C++14 |
|
May 7, 2020 |
C17 |
C++14 |
|
March 12, 2020 |
C17 |
C++14 |
|
March 4, 2020 |
C17 |
C++14 |
|
November 14, 2019 |
C11 |
C++14 |
|
August 12, 2019 |
C17 |
C++14 |
|
May 3, 2019 |
C17 |
C++14 |
|
February 22, 2019 |
C17 |
C++14 |
|
December 6, 2018 |
C11 |
C++14 |
|
October 26, 2018 |
C11 |
C++98 |
|
July 26, 2018 |
C17 |
C++14 |
|
May 2, 2018 |
C17 |
C++14 |
|
January 25, 2018 |
C11 |
C++14 |
|
October 10, 2017 |
C11 |
C++98 |
|
August 14, 2017 |
C11 |
C++14 |
|
July 4, 2017 |
C11 |
C++14 |
|
May 2, 2017 |
C11 |
C++14 |
|
December 21, 2016 |
C11 |
C++14 |
|
August 22, 2016 |
C11 |
C++14 |
|
August 3, 2016 |
C90 |
C++98 |
|
June 3, 2016 |
C11 |
C++98 |
|
April 27, 2016 |
C11 |
C++14 |
|
December 4, 2015 |
C11 |
C++98 |
|
July 16, 2015 |
C11 |
C++98 |
|
June 26, 2015 |
C90 |
C++98 |
|
June 23, 2015 |
C90 |
C++98 |
|
April 22, 2015 |
C90 |
C++98 |
|
December 19, 2014 |
C90 |
C++98 |
|
October 30, 2014 |
C90 |
C++98 |
|
July 16, 2014 |
C90 |
C++98 |
|
June 12, 2014 |
C90 |
C++98 |
|
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 std=gnu++2b |