在最近接触的新的项目,由于技术使用为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
std=gnu++2b