C 编译器支持
来自 cppreference.com
< c
此页面尽力维护,可能落后于最新的编译器版本。如果您发现某些内容过时,请帮助我们更新它! |
内容 |
[编辑] C23 特性
请注意,随着 C23/2x 标准草案的演变,此列表可能会发生变化。
[编辑] 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 (部分)* 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 |
部分部分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++ |
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 标准库的另一个列表 |
[编辑] C99 特性
[编辑] C99 核心语言特性
本节内容不完整 原因:需要列出 C 编译器,验证 |
C99 特性 |
论文 |
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 |
|
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
在标识符 中使用通用字符名 | N/A | 3.1 | 是 | 是 | ||||||||||||
增加翻译限制 | N590 | 0.9 | N/A | |||||||||||||
// 注释 | N644 | 2.7 | 是 | 是 | ||||||||||||
restrict 指针 | N448 | 2.95 | 是 | 部分* | ||||||||||||
增强算术类型 | N815 N601 N620 N638 N657 N694 N809 |
是 | 部分 | 可能 | ||||||||||||
灵活数组成员 | N/A | 3.0 | 是 | 是 | ||||||||||||
可变长度数组 (VLA) 类型 | N683 | 0.9 | 是 | |||||||||||||
可变修饰 (VM) 类型 | N2778 | N/A | 是 | |||||||||||||
指定初始化器 | N494 | 3.0 | 是 | 是 | ||||||||||||
非常量初始化器 | N/A | 1.21 | N/A | |||||||||||||
幂等 cvr 限定符 | N505 | 3.0 | N/A | |||||||||||||
在枚举器列表 中的尾随逗号 | N/A | 0.9 | 是 | 是 | ||||||||||||
十六进制浮点常量 | N308 | 2.8 | 是 | 是 | ||||||||||||
复合字面量 | N716 | 3.1 | 是 | 是 | ||||||||||||
浮点环境 | N/A | 部分 | 部分 | |||||||||||||
要求对带符号整数类型的除法进行截断 | N617 | 0.9 | N/A | |||||||||||||
在main() 函数 中隐式return 0; |
N/A | 是 | 是 | 是 | ||||||||||||
混合顺序的声明和语句 | N740 | 3.0 | 是 | 是 | ||||||||||||
初始化语句 在for 循环中 | N/A | 是 | 是 | 是 | ||||||||||||
inline 函数 | N741 | 4.3 | 是 | 是 | ||||||||||||
预定义变量__func__ | N611 | 2.95 | 是 | 是 | ||||||||||||
Cvr 限定符和static 在函数声明中的[] 内 | N/A | 3.1 | 是 | |||||||||||||
可变参数宏 | N707 | 2.95 | 是 | 是 | ||||||||||||
_Pragma 预处理器运算符 | N634 | 3.0 | 是 | 部分* | ||||||||||||
浮点计算的标准编译指示 | N631 N696 |
否 | 否 | 是 | ||||||||||||
C99 特性 |
论文 |
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 |
[编辑] 另请参阅
C++ 文档 有关 编译器支持
|