C99

来自cppreference.com
< c


ISO/IEC 9899:1999,又称 C99,是先前的 C 标准版本。

过时

已移除

  • 声明中的隐式 int
  • 隐式函数声明

已摒弃

  • gets()

新的语言功能特性

针对可选功能特性的功能特性测试宏

新的库功能特性

新的头文件

程序库功能特性

  • 整数类型的别名
    • 具有精确宽度的整数类型 (intN_t 和 uintN_t)
    • 至少具有给定宽度的最快整数类型 (int_fastN_t 和 uint_fastN_t)
    • 至少具有给定宽度的最小整数类型 (int_leastN_t 和 uint_leastN_t)
    • 可用于对象指针之间转换的整数类型 (intptr_t 和 uintptr_t)
    • 具有最大宽度的整数类型 (intmax_t 和 uintmax_t)
  • long long 和 intmax_t 的运算
    • llabs()
    • abs
    • div
    • div
  • 访问浮点环境
  • 扩充的浮点数学函数
    • 新的浮点数学函数
    • 现存和新浮点数学函数的 -f 和 -l 变体
    • 数学错误处理
  • 复数函数
  • _Exit()
  • 针对 long long、unsigned long long、intmax_t 和 uintmax_t 的格式化支持
    • atoll()
    • strtoimax()
    • strtoll()
    • strtoull
    • strtoumax()
    • wcstoimax()
    • wcstoll()
    • wcstoull()
    • wcstoumax()
  • isblank() 和 iswblank()
  • snprintf() 和 vsnprintf()
  • vfscanf() 和 vfwscanf() 函数族
  • 对 fscanf() 和 fprintf() 函数族的扩展
    • 针对 long long 和 unsigned long long 的长度修饰符 ll
    • 针对 signed char 和 unsigned char 的长度修饰符 hh
    • 针对 double 的长度修饰符 l
    • 针对 size_t 及其有符号版本的长度修饰符 z
    • 针对 ptrdiff_t 及其无符号版本的长度修饰符 t
    • 针对 intmax_t 和 uintmax_t 的长度修饰符 j
    • 针对浮点类型的转换修饰符 a
  • 针对 long long 和 unsigned long long 的数值限制宏
  • 对应于现存和新的整数类型别名的数值限制宏
  • 针对整数类型的格式化字符串宏
  • va_copy
  • 泛型数学宏
  • 浮点比较宏
  • 浮点分类宏
  • 针对 _Bool 的兼容性宏 (bool、true 和 false)

缺陷报告

Template:c/language/history/DR99

编译器支持

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 循环中的 初始化语句 是 是 是
inline 函数 N741 4.3 是 是
预定义变量 __func__ N611 2.95 是 是
函数声明中的 [] 之中的 cvr 限定符和 static 3.1 是
变参宏 N707 2.95 是 是
_Pragma 预处理器运算符 N634 3.0 是 部分*
浮点数求值的标准语用(pragma) N631
N696
否 否
 

C99 功能特性
 

提案
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (ex PGI)*
Nvidia nvcc
Cray