C 的历史

来自cppreference.com
< c‎ | language

目录

[编辑] 早期 C

  • 1969 :基于 BCPL 创建 B ,以作为 Unix 的系统程序语言替代 PDP-7 汇编器
  • 增加运算符 ++ 、 -- 、复合赋值,保持为类 BCPL 的无类型语言
  • 1971 :于将 B 移植到 PDP-11 时创建 NB (新“ B ”)
  • 类型( int 、 char 、数组与指针)、数组到指针转换、到机器码的编译
  • 1972 :语言更名为 C
  • 结构体、运算符 && 及 || 、预处理器、可移植 I/O
  • 1973 :以C重写
  • 无符号整数、long、联合体、枚举、增强的类型安全
  • 1978 : The C Programming Language ,第1版

[编辑] 标准 C

  • 1983: ANSI建立X3J11委员会
  • 1988: The C Programming Language ,第2版
  • 1989: C89 ,ANSI C 标准出版
  1. 代码化的既存实践
  2. 新特性:volatile、enum、有符号整数、void、本地环境
  3. 来自C++:const、函数原型
  • 1990: C90 ,ANSI C 标准被接纳为 ISO/IEC 9899-1990
  • 1995: C95( ISO/IEC 9899 AM1 )(在线商店
  1. 多字节字符支持( wchar_t 及所有宽及多字节函数、 wchar.h 、 wctype.h ,及对既存头文件的添加与对应流 I/O 的更改等)
  2. 双标符,iso646.h,
  • 1995:技术勘误1(ISO/IEC 9899 TCOR1)
  • 1996:技术勘误2(ISO/IEC 9899 TCOR2)
  • 1999:C99( ISO/IEC 9899:1999 )
  1. 新特性:_Bool、 long long、 stdint.h、 inttypes.h、 restrict、复合字面量、变长度数组、伸缩数组成员、指代初始化器、 fenv.h、变参数宏、复数、 __func__、十六进制浮点格式(%a)、lconv的货币格式化、 isblank、窄与宽字符串字面量的连接、枚举的尾逗号、类函数宏的空参数、 STDC_* pragma、 va_copy、 tmpnam的空返回、 setvbuf中的空指针、printf的hh与ll长度指定符、 snprintf、 _Exit、 tgmath.h、类POSIX strftime指定符
  2. 来自C++:inline、声明与代码混合、for循环的init子句中的声明、//注释、源代码中的通用字符名
  3. 移除隐式函数声明和隐式int
  • 2001:技术勘误1(ISO/IEC 9899:1999/Cor.1:2001(E))
  • 2004:技术勘误2(ISO/IEC 9899:1999/Cor.2:2004(E))
  • 2004:Unicode TR(ISO/IEC TR 19769:2004)(ISO商店)(2013-11-07方案
  • 2007:技术勘误3(ISO/IEC 9899:1999/Cor.3:2007(E))(2007-09-07方案
  • gets设为过时
  1. 具备线程的内存模型 、 stdatomic.h 、 threads.h 、泛型函数、 _Alignas/_Alignof 、 _Noreturn 、 _Static_assert 、可分析性扩展、对复数和虚数类型的扩展、匿名结构体与联合体、独占文件打开模式、 quick_exit
  2. 移除 gets
  3. 来自边界检查接口 TR :边界检查接口
  4. 来自 Unicode TR : char16_t 、 char32_t ,及 uchar.h
  • 2012:技术勘误1(ISO/IEC 9899:2011/Cor 1:2012)(ISO商店
  • 2013:安全代码规则TS(ISO/IEC TS 17961:2013)(ISO商店)(2012-12-26
  • 2014:FP TS部分1:二进制浮点算术(ISO/IEC TS 18661-1:2014)(ISO商店)(2013方案
  1. 提供对C11的更改(主要对附录F),以覆盖所有基本要求及一些IEC 60559:2011的推荐(C11构建于IEC 60559:1989)
  • 2015:FP TS部分2:十进制浮点算术(ISO/IEC TS 18661-2:2015)(ISO商店) (2015方案
  1. 提供对C11的更改,以支持所有要求,加上一些IEC 60559:2011对十进制浮点算术的基本推荐。它替代了ISO/IEC TR 24732:2009。
  • 2015:FP TS部分33:交换及扩展类型(ISO/IEC TS 18661-3:2015)(ISO商店)(2015方案
  1. 提供对C11的更改,以支持IEC 60559:2011对扩展浮点格式及交换格式的推荐,包括算术和非算术。
  • 2015:FP TS部分4:补充的函数(ISO/IEC TS 18661-4:2015)(ISO商店)(2015方案
  1. 提供对C11的更改,以支持所有IEC 60559:2011推荐的数学运算,包括π单位的三角函数、平方根倒数、复利等。
  • 2016:FP TS部分5:补充的属性(ISO/IEC TS 18661-5:2016)(ISO商店)(2016方案
  1. 提供对C11的更改,以支持所有IEC 60559:2011推荐的补充属性(求值模型、异常处理、可再现性等)

[编辑] 未来发展

  • C17 下个次要 C 语言标准版本,将包含所有接受的 C11 缺陷报告,但无新特性
  • 并行 TS (方案 n2017 2016-03-10 )
  • 事务性内存 TS (方案 n1961 2015-09-23 )
  • C2x 下个 C 语言标准版本

[编辑] 参阅

C++ 的历史C++ 文档

[编辑] 引用