命名空间
变体
操作

C 语言历史

来自 cppreference.com
< c‎ | 语言

目录

[编辑] 早期 C

  • 1969: B 语言诞生,基于 BCPL,用于替换 PDP-7 汇编语言作为 Unix 的系统编程语言
  • 添加了运算符 ++--,复合赋值,仍然像 BCPL 一样是无类型语言
  • 1971: 在将 B 移植到 PDP-11 时创建了 NB(“new B”)
  • 类型(intchar,数组和指针),数组到指针的转换,编译为机器代码
  • 1972: 语言更名为 C
  • struct,运算符 &&||,预处理器,可移植 I/O
  • 1973: Unix 用 C 重写
  • unsignedlongunion,枚举,提高了类型安全性
  • 1978: 《C 编程语言》第一版

[编辑] 标准 C

  • 1983: ANSI 成立了 X3J11 委员会
  • 1988: 《C 编程语言》第二版
  • 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),lconv 中的货币格式,isblank,窄字符串和宽字符串字面量的连接,枚举中的尾随逗号,函数式宏中的空参数,STDC_* 编译指示,va_copytmpnam 的空返回,setvbuf 中的空指针,hhll 长度说明符在 printfsnprintf_Exit 中,<tgmath.h>,类 POSIX 的 strftime 说明符
  2. 来自 C++:inline,混合声明和代码,for 循环初始化语句中的声明,// 注释,源代码中的通用字符名
  3. 删除了隐式函数和隐式 int
  • 2001: 技术勘误 1(ISO/IEC 9899:1999/Cor.1:2001)
  • 2004: 技术勘误 2(ISO/IEC 9899:1999/Cor.2:2004)
  • 2004: Unicode TR(ISO/IEC TR 19769:2004)(ISO 商店)(N1040 2003 年 11 月 7 日草案)
  • 2007: 技术勘误 3(ISO/IEC 9899:1999/Cor.3:2007)(N1256 2007 年 9 月 7 日草案)
  • 2007: 边界检查接口 TR(ISO/IEC TR 24731-1:2007)(ISO 商店)(N1225 2007 年 3 月 28 日草案)
  • 2008: 嵌入式 TR(ISO/IEC TR 18037:2008)(ISO 商店)(N1021 2003 年 9 月 24 日草案)
  • 2009: 十进制浮点 TR(ISO/IEC TR 24732:2009)(ISO 商店)(N1241 2007 年 7 月 5 日草案)
  • 2009: 数学特殊函数 TR(ISO/IEC TR 24747:2009)(ISO 商店)(N1182 2006 年 8 月 2 日草案)
  • 2010: 动态分配函数 TR(ISO/IEC TR 24731-2:2010)(ISO 商店)(N1388 2009 年 6 月 1 日草案)
  • 2011: **C11**(ISO/IEC 9899:2011)(ISO 商店)(ANSI 商店)(N1570 2011 年 4 月 12 日草案)
  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 商店
  • 2013: 安全编码规则 TS(ISO/IEC TS 17961:2013)(ISO 商店)(N1718 2013 年 5 月 30 日)
  • 2014: FP TS 第 1 部分:二进制浮点运算(ISO/IEC TS 18661-1:2014)(ISO 商店)(N1778 2013 年草案)
  1. 对 C11 进行了一些修改(主要是附录 F),涵盖了 IEC 60559:2011 的所有基本要求和一些建议(C11 是基于 IEC 60559:1989 构建的)
  • 2015: FP TS 第 2 部分:十进制浮点运算(ISO/IEC TS 18661-2:2015)(ISO 商店)(N1912 2015 年草案)
  1. 对 C11 进行了一些修改,以支持 IEC 60559:2011 对十进制浮点运算的所有要求,以及一些基本建议。这取代了 ISO/IEC TR 24732:2009。
  • 2015: FP TS 第 3 部分:交换和扩展类型(ISO/IEC TS 18661-3:2015)(ISO 商店)(N1945 2015 年草案)
  1. 对 C11 进行了一些修改,以支持 IEC 60559:2011 对扩展浮点格式和交换格式(算术和非算术)的建议。
  • 2015: FP TS 第 4 部分:补充函数(ISO/IEC TS 18661-4:2015)(ISO 商店)(N1950 2015 年草案)
  1. 对 C11 进行了一些修改,以支持 IEC 60559:2011 建议的所有数学运算,包括以 π 为单位的三角函数,平方根倒数,复利等。
  • 2016: FP TS 第 5 部分:补充属性(ISO/IEC TS 18661-5:2016)(ISO 商店)(N2004 2016 年草案)
  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 中修复的缺陷报告(? 缺陷)

[编辑] 另请参阅

C++ 文档 关于 C++ 历史

[编辑] 外部链接

1.  C 语言的开发 by Dennis M. Ritchie
2.  C99 标准的理由