GCC版本和C语言标准版本的对应关系
以下是GCC版本与C语言标准支持情况的对应关系表格,涵盖主要版本的显式支持选项及默认C标准(含GNU扩展):
GCC版本 | 显式支持的C标准(编译选项示例) | 默认C标准(隐含GNU扩展) | 关键说明 |
---|---|---|---|
GCC 1.0 - 2.x | C89(部分支持) | 无明确默认(接近C89) | 早期版本对C89支持不完整,仅实现基础特性。 |
GCC 3.0 - 4.2 | C89(完全支持)、C99(部分特性) |
| 开始支持C99的基础特性(如 |
GCC 4.3 - 4.5 | C89、C99(完全支持)、C11(实验性, |
| 正式完成C99核心特性支持(如 |
GCC 4.6 - 5.x | C89、C99、C11(部分支持, |
| C11支持逐步完善(如原子操作、 |
GCC 6 - 10.x | C89、C99、C11(完全支持)、C17(实验性, |
| 默认C标准升级为 |
GCC 11.x | C89、C99、C11、C17(完全支持)、C23(实验性, |
| C17支持趋于稳定;C23进入实验性支持(如 |
GCC 12.x 及以上 | C89、C99、C11、C17、C23(部分支持, |
| 默认C标准升级为 |
补充说明:
GNU扩展:GCC默认启用的GNU扩展(如
gnu89
、gnu11
)在标准基础上增加了额外特性(如可变长度数组的扩展、函数属性),但可能与严格C标准存在差异。实验性支持:标记为“实验性”的C标准需通过显式选项启用(如
-std=c11
),可能存在部分特性未实现或行为与标准不完全一致。C23状态:截至GCC 12,C23仍处于实验性阶段,部分特性(如
char8_t
、stdckdint.h
)已支持,完整支持需等待后续版本。验证方法:可通过
gcc -v --help=std
查看当前GCC支持的所有C标准选项及默认值。
如上图,GNU C17表示当前GCC版本所支持的C语言标准版本。