C compiler support
From cppreference.net
<
c
|
|
本页面将尽力维护,但可能滞后于最新的编译器版本。如果您发现内容已过时,请协助我们更新! |
目录 |
C23 特性
请注意,此列表可能会随着C23/2x草案标准的演变而发生变化。
C23 核心语言特性
|
本节内容不完整
原因:缺少对Apple Clang及其他支持C2x的编译器的状态说明 |
|
C23 特性
|
提案文档
|
GCC
|
Clang
|
MSVC
|
Apple Clang
|
EDG eccp
|
Intel C++
|
Nvidia HPC C++ (原 PGI)*
|
Nvidia nvcc
|
Cray
|
|
|---|---|---|---|---|---|---|---|---|---|---|---|
| static_assert 无消息的静态断言 | N2265 | 9 | 9 | 是 | 是 | 6.5 | 2021.1.2 (基于clang) | ||||
[[
nodiscard
]]
|
N2267 | 10 | 9 | 是 | 6.4 | 2021.1.2 (基于clang) | |||||
[[
maybe_unused
]]
|
N2270 | 10 | 9 | 是 | 6.4 | 2021.1.2 (基于clang) | |||||
[[
deprecated
]]
|
N2334 | 10 | 9 | 是 | 6.4 | 2021.1.2 (基于clang) | |||||
| 属性 |
N2335
N2554 |
10 | 9 | 是 | 6.4 | 2021.1.2 (clang based) | |||||
| IEEE 754 十进制浮点类型 | N2341 |
4.2
(部分支持)*
12 |
13.0 (部分支持)* | ||||||||
[[
fallthrough
]]
|
N2408 | 10 | 9 | 是 | 6.4 | 2021.1.2 (基于clang) | |||||
u8
字符常量
|
N2418 | 10 | 15 | 6.5 | 2022.2 | ||||||
| 移除无原型的 函数定义 | N2432 | 10 | 15 | 2022.2 | |||||||
[[
nodiscard
]]
带消息
|
N2448 | 11 | 10 | 是 | 6.4 | 2021.1.2 (clang based) | |||||
| 函数定义中的未命名参数 | N2480 | 11 | 11 | 是 | 6.4 | 2021.1.2 (clang based) | |||||
| 标签 位于声明前和块末尾 | N2508 | 11 | 16 | 部分支持* | 6.5 | 17.0 * | |||||
| 二进制整型常量 | N2549 |
4.3
*
11 |
2.9
*
9 |
19.0 (2015)* * | 是 | 6.5 | 11.0 * | ||||
| __has_c_attribute 在预处理器条件判断中使用 | N2553 | 11 | 9 | 是 | 6.5 | 2021.1.2 (基于clang) | |||||
| 允许重复属性 | N2557 | 11 | 13 | 是 | 6.5 | 2021.4 (clang-based | |||||
| IEEE 754交换格式与扩展类型 | N2601 |
7
(部分支持)*
14 |
6 (部分支持)* | 部分支持* | |||||||
| 数字分隔符 | N2626 | 12 | 13 | 19.0 (2015)* * | 是 | 6.5 | 18.0 * | ||||
#elifdef
和
#elifndef
|
N2645 | 12 | 13 | 19.40* | 13.1.6* | 6.5 | 2021.4 | ||||
u8
字符串字面量
的类型变更
|
N2653 | 13 | |||||||||
[[
maybe_unused
]]
用于标签
|
N2662 | 11 | 16 | 6.5 | 2022.2 | ||||||
| #warning | N2686 | 是 | 是 | 是 | 6.5 | 是 | |||||
| 位精确整数类型 ( _BitInt ) | N2763 | 14 (部分支持)* | 15 | 6.5 | 2022.2 | ||||||
[[
noreturn
]]
|
N2764 | 13 | 15 | 6.5 | 2022.2 | ||||||
| 位精确整数常量的后缀 | N2775 | 14 | 15 | 2022.2 | |||||||
| __has_include 在预处理器条件判断中 | N2799 | 5 | 是 | 19.11* | 是 | 6.5 | 18.0 | ||||
| 使用Unicode技术报告第31号的标识符语法 | N2836 | 13 | 15 | 6.5 | 2022.2 | ||||||
| 移除无原型的 函数声明 | N2841 | 13 | 15 | 2022.2 | |||||||
| 空初始化器 | N2900 |
部分支持*
13 |
部分支持* | 部分支持* | 部分支持* | 部分支持* | |||||
| typeof 和 typeof_unqual |
N2927
N2930 |
部分支持*
13 |
部分支持*
16 |
19.39* | 部分支持* | 部分支持* | 部分支持* | 部分支持* | |||
| 关键字的新拼写 | N2934 | 13 | 16 | 6.5 | |||||||
| 预定义 true 与 false | N2935 | 13 | 15 | 2022.2 | |||||||
[[
unsequenced
]]
和
[[
reproducible
]]
|
N2956 | 15 | |||||||||
| 放宽对 可变参数列表 的要求 | N2975 | 13 | 16 | 6.5 | 2023.1 | ||||||
| 对象定义中的类型推断 | N3007 | 13 | 18 | ||||||||
| #embed | N3017 | 15 | 19 | ||||||||
| constexpr 对象 | N3018 | 13 | 19 | ||||||||
| 改进的普通枚举 | N3029 | 13 | 20 * | ||||||||
| 具有固定基础类型的枚举 | N3030 | 13 | 20 * | ||||||||
__VA_OPT__
|
N3033 |
8
13 |
12 | 19.39* | 6.5 | ||||||
| 复合字面量的存储类说明符 | N3038 | 13 | |||||||||
| nullptr | N3042 | 13 | 16 | ||||||||
|
C23 特性 |
提案文档 |
GCC
|
Clang
|
MSVC
|
Apple Clang
|
EDG eccp
|
Intel C++
|
Nvidia HPC C++ (原 PGI)*
|
Nvidia nvcc
|
Cray
|
C23 库特性
|
本节内容尚不完整
原因:需单独列出C标准库相关内容 |
C99 特性
C99 核心语言特性
|
本节内容不完整
原因:需要列出C编译器及验证信息 |
|
C99 特性
|
提案文档
|
GCC
|
Clang
|
MSVC
|
Apple Clang
|
EDG eccp
|
Intel C++
|
Nvidia HPC C++ (原 PGI)*
|
Nvidia nvcc
|
Cray
|
|
|---|---|---|---|---|---|---|---|---|---|---|---|
| 标识符中的 通用字符名称 | 3.1 | 是 | 是 | ||||||||
| 提升的 翻译限制 | N590 | 0.9 | 不适用 | ||||||||
| // 注释 | N644 | 2.7 | 是 | 是 | |||||||
| restrict 限定指针 | N448 | 2.95 | 是 | 部分支持 * | |||||||
| 增强的 算术类型 |
N815
N601 N620 N638 N657 N694 N809 |
是 | 部分 | 可能 | |||||||
| 柔性数组成员 | 3.0 | 是 | 是 | ||||||||
| 变长数组 (VLA) 类型 | N683 | 0.9 | 是 | ||||||||
| 可变修改(VM)类型 | N2778 | N/A | 是 | ||||||||
| 指定初始化器 | N494 | 3.0 | 是 | 是 | |||||||
| 非常量初始化器 | 1.21 | N/A | |||||||||
| 幂等性 cvr限定符 | N505 | 3.0 | 不适用 | ||||||||
| 枚举列表中的 enumerator-list 尾随逗号 | 0.9 | 是 | 是 | ||||||||
| 十六进制 浮点常量 | N308 | 2.8 | 是 | 是 | |||||||
| 复合字面量 | N716 | 3.1 | 是 | 是 | |||||||
| 浮点环境 | 部分支持 | 部分支持 | |||||||||
| 要求对有符号整数类型的除法进行截断处理 | N617 | 0.9 | N/A | ||||||||
在
main()
函数
中的隐式
return
0
;
|
是 | 是 | 是 | ||||||||
| 声明与语句混合排序 | N740 | 3.0 | 是 | 是 | |||||||
| 初始化语句 在 for 循环中 | 是 | 是 | 是 | ||||||||
| inline 内联函数 | N741 | 4.3 | 是 | 是 | |||||||
| 预定义变量 __func__ | N611 | 2.95 | 是 | 是 | |||||||
| 函数声明中的Cvr限定符与 static 在 [ ] 内的用法 | 3.1 | 是 | |||||||||
| 可变参数宏 | N707 | 2.95 | 是 | 是 | |||||||
| _Pragma 预处理器运算符 | N634 | 3.0 | 是 | 部分支持 * | |||||||
| 浮点求值的标准杂注 |
N631
N696 |
否 | 否 | ||||||||
|
C99 特性 |
提案文档 |
GCC
|
Clang
|
MSVC
|
Apple Clang
|
EDG eccp
|
Intel C++
|
Nvidia HPC C++ (原 PGI)*
|
Nvidia nvcc
|
Cray
|
另请参阅
|
C++ 文档
关于
编译器支持
|