C23 的编译器支持
来自cppreference.com
< c | compiler support
c23 核心语言特性
本节未完成 原因:Apple Clang 和其他编译器对 C2x 的支持状态 |
C23 功能特性 |
提案 |
GCC |
Clang |
MSVC |
Apple Clang |
EDG eccp |
Intel C++ |
IBM XL C++ |
IBM Open XL C++ for AIX |
IBM Open XL C++ for z/OS |
Sun/Oracle C++ |
Embarcadero C++ Builder |
Cray |
Nvidia HPC C++ (ex PGI)* |
Nvidia nvcc |
|
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
无消息的 _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) | ||||||||||
ieee 754 十进制浮点类型 | N2341 | 4.2 (部分)* | 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 | ||||||||||||
有消息 (message) 的 [[nodiscard]]
|
N2448 | 11 | 10 | 是 | 6.4 | 2021.1.2 (基于 clang) | ||||||||||
函数定义中的匿名形参 | N2480 | 11 | 11 | 是 | 6.4 | 2021.1.2 (基于 clang) | ||||||||||
声明和语句块结束前的标签 | 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 | ||||||||||
IEEE 754 交换和扩展类型 | N2601 | 7 (部分)* | 6 (部分)* | 部分* | ||||||||||||
数位分隔符 | N2626 | 12 | 13 | 19.0 (2015)** | 是 | 6.5 | 18.0* | |||||||||
#elifdef 和 #elifndef
|
N2645 | 12 | 13 |
13.1.6* |
6.5 | 2021.4 | ||||||||||
u8 字符串字面量的类型修改
|
N2653 | |||||||||||||||
标签的 [[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 | 部分* | 部分* | 部分* | 部分* | 部分* |
| |||||||||
typeof 和 typeof_unqual | n2927 N2930 |
部分* 13 |
部分* 16 |
19.39* | 部分* | 部分* | 部分* | 部分* | ||||||||
新的关键字拼写 | N2934 | 13 | 16 | 6.5 | ||||||||||||
预定义 true 和 false
|
N2935 | 13 | 15 | 2022.2 | ||||||||||||
[[unsequenced]] 和 [[reproducible]]
|
N2956 | |||||||||||||||
放宽对变长参数列表的要求 | N2975 | 13 | 16 | 6.5 | 2023.1 | |||||||||||
对象定义中的类型接口 | N3007 | 13 | ||||||||||||||
#embed | N3017 | |||||||||||||||
constexpr 对象 | N3018 | 13 | ||||||||||||||
改善普通枚举 | N3029 | 13 | ||||||||||||||
增强枚举 | N3030 | 13 | 可能 | |||||||||||||
__va_opt__
|
N3033 | 8 | 12 | 6.5 | ||||||||||||
复合字面值的存储说明符 | N3038 | 13 | ||||||||||||||
nullptr | N3042 | 13 | 16 | |||||||||||||
C23 功能特性 |
提案 |
GCC |
Clang |
MSVC |
Apple Clang |
EDG eccp |
Intel C++ |
IBM XL C++ |
IBM Open XL C++ for AIX |
IBM Open XL C++ for z/OS |
Sun/Oracle C++ |
Embarcadero C++ Builder |
Cray |
Nvidia HPC C++ (ex PGI)* |
Nvidia nvcc |
c23 库特性
本节未完成 原因:C 标准库的差异列表 |