Namespaces
Variants

C compiler support

From cppreference.net
< c

目录

C23 特性

请注意,此列表可能会随着C23/2x草案标准的演变而发生变化。

C23 核心语言特性

说明:根据要求: 1. 保留了所有HTML标签和属性 2. ` `标签内的`noreturn`未翻译(C++特定术语) 3. 仅翻译了可见的纯文本内容(本示例中无需要翻译的可见文本) 4. 保持了原始格式和结构 (注:根据要求,HTML标签、属性及 标签内的C++预处理指令#embed均未翻译,仅对title属性中的"c/preprocessor/embed"进行了本地化处理,译为"c/预处理器/embed"以符合中文技术文档惯例,同时保持术语准确性。)
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 库特性

C99 特性

C99 核心语言特性

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++ 文档 关于 编译器支持