C99
来自 cppreference.com
< c
ISO/IEC 9899:1999,也称为 C99,是 C 标准的先前修订版。
本节内容不完整 原因:核心/库功能、TC1~TC3、DRs |
内容 |
[编辑] 已过时
[编辑] 已移除
- 声明中的隐式 int
- 隐式函数声明
[编辑] 已弃用
[编辑] 新的语言功能
- 标识符 中的通用字符名称
- 增加的 翻译限制
- // 注释
- 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) 类型
- 改进 braced-init-list,用于 数组、结构体和联合体 类型
- 非常量初始化器
- 指定初始化器
- 幂等 cvr 限定符
- 枚举器列表 中的尾随逗号
- 十六进制 浮点常量
- 复合字面量
- 浮点环境
- 要求对带符号整数类型的除法进行截断
- 在
main()
函数 中隐式 return 0; - 声明和语句以混合顺序出现
- for 循环中的 init-statement
- inline 函数
- 预定义变量 __func__
- 函数声明中的 cvr 限定符和 static 在 [] 内
- 可变参数宏
- _Pragma 预处理器运算符
- 用于浮点计算的标准编译指示
-
STDC
FENV_ACCESS -
STDC
FP_CONTRACT -
STDC
CX_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)
[编辑] 缺陷报告
Template:c/language/history/DR99
[编辑] 编译器支持
[编辑] 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++ (前身为 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 循环中的 init-statement | 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++ (前身为 PGI)* |
Nvidia nvcc |