命名空间
变体
操作

C 编译器支持

来自 cppreference.cn
< c

目录

[编辑] C23 特性

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

[编辑] C23 核心语言特性

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
部分* 部分* 部分* 部分*
typeoftypeof_unqual N2927
N2930
部分*
13
部分*
16
19.39* 部分* 部分* 部分* 部分*
关键字的新拼写 N2934 13 16 6.5
预定义的 truefalse 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 库特性

[编辑] C99 特性

[编辑] C99 核心语言特性

C99 特性

 
提案

 
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (ex 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 不适用
指定初始化器 N494 3.0
非常量初始化器 1.21 不适用
幂等 cvr 限定符 N505 3.0 不适用
枚举列表中的尾随逗号 0.9
十六进制浮点常量 N308 2.8
复合字面量 N716 3.1
浮点环境 部分 部分
要求有符号整数类型除法截断 N617 0.9 不适用
main() 函数中隐式的 return 0;
混合顺序的声明和语句 N740 3.0
for 循环中的 init-statement
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++ (ex PGI)*
Nvidia nvcc
Cray


[编辑] 参见

C++ 文档 关于 编译器支持