C99
From cppreference.net
<
c
ISO/IEC 9899:1999 ,又称 C99 ,是C语言标准的一个先前修订版本。
|
本部分内容尚不完整
原因:核心/库特性、TC1~TC3、缺陷报告 |
目录 |
新增语言特性
- 标识符 中的通用字符名
- 提升的 翻译限制
- // 注释
- restrict 指针
-
增强的
算术类型
- _Bool
- long long 与 unsigned long long
- 扩展整数类型
- _Complex 类型 ( float _Complex , double _Complex , 及 long double _Complex )
- _Imaginary 类型 ( float _Imaginary , double _Imaginary , 及 long double _Imaginary )
- 柔性数组成员
- 可变长度数组 (VLA) 类型及可变修改 (VM) 类型
-
针对
数组
、
结构体和联合体
类型的
花括号初始化列表
改进
- 非常量初始化器
- 指定初始化器
- 幂等的 cvr 限定符
- 枚举列表 中的尾随逗号
- 十六进制 浮点常量
- 复合字面量
- 浮点环境
- 要求对有符号整数类型的除法进行截断
-
main()函数 中隐式的 return 0 ; - 声明与语句的混合顺序
- for 循环中的 初始化语句
- inline 函数
- 预定义变量 __func__
- 函数声明中 [ ] 内的 cvr 限定符与 static
- 可变参数宏
- _Pragma 预处理运算符
-
用于浮点求值的标准杂注
-
STDCFENV_ACCESS -
STDCFP_CONTRACT -
STDCCX_LIMITED_RANGE
-
可选功能的特性测试宏
-
__STDC_IEC_559__
- 表示支持IEEE-754二进制浮点算术及必需的数学函数。
-
__STDC_IEC_559_COMPLEX__
- 表示支持IEEE-754复数算术及必需的数学函数。
-
__STDC_HOSTED__
- 表示该实现为 托管实现 。
-
__STDC_ISO_10646__
- 表示宽字符字面量编码使用Unicode,并扩展至最新支持的修订版本。
-
__STDC_MB_MIGHT_NEQ_WC__
- 表示基本字符集中存在某些字符,在 普通字符字面量编码和宽字符字面量编码 中具有不同的码元值。
新增库特性
新增头文件
库特性
- 整数类型别名
- 对 long long 和 intmax_t 的操作
- 浮点环境访问
-
扩展浮点数学函数
- 新增浮点数学函数
-
现有及新增浮点数学函数的
-f和-l变体 - 数学错误处理
- 复数函数
- _Exit()
- 对 long long 、 unsigned long long 、 intmax_t 和 uintmax_t 的格式化支持
- isblank() 和 iswblank()
- snprintf() 和 vsnprintf()
- vfscanf() 和 vfwscanf() 函数族
- 对 fscanf() 和 fprintf() 函数族的扩展
- 用于 long long 和 unsigned long long 的数值限制宏
- 对应现有及新增整数类型别名的数值限制宏
- 整数类型的格式字符串宏
- va_copy
- 泛型数学宏
- 浮点数比较宏
- 浮点数分类宏
- 用于 _Bool 的兼容性宏( bool 、 true 和 false )
已过时功能
已移除特性
- 声明中的隐式 int
- 隐式函数声明
已弃用特性
缺陷报告
编译器支持
C99 核心语言特性
|
本节内容不完整
原因:需要列出C编译器、验证 |
|
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 | 不适用 | </ |