C 的历史

来自cppreference.com
< c‎ | language


早期 C

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

标准 C

  • 1983:ANSI 建立 X3J11 委员会
  • 1988:《The C Programming Language》,第2版
  • 1989:C89,ANSI C 标准出版
  1. 代码化的既存实践
  2. 新特性:volatileenumsignedvoid、本地环境
  3. 来自 C++:const、函数原型
  • 1990:C90,ANSI C 标准被采纳为 ISO/IEC 9899-1990
  • 1994:技术勘误 1(ISO/IEC 9899:1990/Cor.1:1994)
  • 1995:C95(ISO/IEC 9899:1990/Amd.1:1995)(在线商店
  1. 极大扩充了宽和多字节字符支持(<wctype.h><wchar.h>、对流 I/O 的添加和更改等)
  2. 双标符、<iso646.h>
  • 1996:技术勘误 2(ISO/IEC 9899:1990/Cor.2:1996)
  • 1999:C99(ISO/IEC 9899:1999)
  1. 新特性:boollong long<stdint.h><inttypes.h>restrict、复合字面量、变长度数组、灵活数组成员、指派初始化器、<fenv.h>、变参数宏、复数、__func__、十六进制浮点格式(%a)、{lc|lconv}} 的货币格式化、isblank、窄与宽字符串字面量的连接、枚举的尾逗号、类函数宏的空实参、STDC_* 语用、va_copytmpnam 的空返回、setvbuf 中的空指针、printfhhll 长度指定符、snprintf_Exit<tgmath.h>、仿 POSIX strftime 说明符
  2. 来自 C++:inline、混合声明与代码、for 循环的初始化子句中的声明、// 注释、源代码中的通用字符名
  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草案
  1. 具线程的内存模型、<stdatomic.h><threads.h>、泛型函数、alignas/alignofnoreturnstatic_assert、可分析性扩展、对复数和虚数类型的扩展、匿名结构体与联合体、独占文件打开模式、 quick_exit
  2. 移除 gets
  3. 来自边界检查接口 TR:边界检查接口
  4. 来自 Unicode TR:char16_tchar32_t,及 <uchar.h>
  • 2012:技术勘误 1(ISO/IEC 9899:2011/Cor 1:2012)(ISO 商店
  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 部分 3:交换及扩展类型(ISO/IEC TS 18661-3:2015)(ISO 商店)(2015 草案
  1. 提供对 C11 的更改,以支持 IEC 60559:2011 对扩展浮点格式及交换格式的推荐,包括算术和非算术。
  1. 提供对 C11 的更改,以支持所有 IEC 60559:2011 推荐的数学运算,包括 π 单位的三角函数、平方根倒数、复利等。
  1. 提供对 C11 的更改,以支持所有 IEC 60559:2011 推荐的补充属性(求值模型、异常处理、可再现性等)
主条目:C17
C17 中修正的缺陷报告( 54 个缺陷)

未来发展

  • 并行 TS(草案 n2017 2016-03-10)
  • 事务性内存 TS(草案 n1961 2015-09-23)
  • C(最新草案 n3301 2024-07-28)
  1. 未赋予 DR 状态的问题列表:(N2556 2020-08-02)
主条目:C23
下个主要 C 语言标准修订版
C23 中修正的缺陷报告(? 个缺陷)

参阅

外部链接

1.  C 语言的发展,作者 Dennis M. Ritchie
2.  C99 标准基本原理