C23 的编译器支持
来自 cppreference.cn
[编辑] C23 核心语言特性
本节尚不完整 原因:Apple Clang 和其他支持 C2x 编译器的状态 |
C23 特性 |
文档 |
GCC |
Clang |
MSVC |
Apple Clang |
EDG eccp |
Intel C++ |
Nvidia HPC C++ (ex 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) | |||||
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) | |||||
函数定义中未命名的参数 | 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 (部分)* 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++ (ex PGI)* |
Nvidia nvcc |
Cray |
[编辑] C23 库特性
本节尚不完整 原因:C 标准库的不同列表 |