C 的历史
来自cppreference.com
早期 C
- 1969:基于 BCPL 创建 B 语言,以替代 PDP-7 汇编器作为 Unix 的系统编程语言
- 增加运算符 ++、--、复合赋值,保持为与 BCPL 类似的无类型语言
- 1971:将 B 移植到 PDP-11 时,创建了 NB 语言(“new B”,即新的 B 语言)
- 支持类型(int、char、数组和指针),数组到指针转换,编译为机器码
- 1972:语言更名为 C
- struct、运算符 && 及 ||、预处理器、可移植 I/O
- 1973:以 C 重写 Unix
- unsigned、long、union、枚举、增强类型安全性
- 1978:《The C Programming Language》,第1版
标准 C
- 1983:ANSI 建立 X3J11 委员会
- 1988:《The C Programming Language》,第2版
- 1989:C89,ANSI C 标准出版
- 代码化的既存实践
- 新特性:volatile、enum、signed、void、本地环境
- 来自 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)(在线商店)
- 极大扩充了宽和多字节字符支持(<wctype.h>、<wchar.h>、对流 I/O 的添加和更改等)
- 双标符、<iso646.h>
- 1996:技术勘误 2(ISO/IEC 9899:1990/Cor.2:1996)
- 1999:C99(ISO/IEC 9899:1999)
- 新特性:bool、long long、<stdint.h>、<inttypes.h>、restrict、复合字面量、变长度数组、灵活数组成员、指派初始化器、<fenv.h>、变参数宏、复数、__func__、十六进制浮点格式(%a)、{lc|lconv}} 的货币格式化、isblank、窄与宽字符串字面量的连接、枚举的尾逗号、类函数宏的空实参、STDC_* 语用、va_copy、tmpnam 的空返回、setvbuf 中的空指针、printf 的
hh
与ll
长度指定符、snprintf、_Exit、<tgmath.h>、仿 POSIX strftime 说明符 - 来自 C++:inline、混合声明与代码、for 循环的初始化子句中的声明、// 注释、源代码中的通用字符名
- 移除隐式函数声明和隐式 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
- 2007:边界检查接口 TR(ISO/IEC TR 24731-1:2007)(ISO 商店)(2007-03-28 草案)
- 2008:嵌入式 TR(ISO/IEC TR 18037:2008)(ISO商店)(2003-09-24 草案)
- 2009:十进制浮点数 TR(ISO/IEC TR 24732:2009)(ISO 商店)(2007-07-05 草案)
- 2009:特殊数学函数 TR(ISO/IEC TR 24747:2009)(ISO 商店)(2006-08-02 草案)
- 2010:动态分配函数 TR(ISO/IEC TR 24731-2:2010)(ISO 商店)(2007-08-15 草案)
- 2011:C11(ISO/IEC 9899:2011)(ISO 商店)(ANSI 商店)(2011-04-12 草案)
- 具线程的内存模型、<stdatomic.h>、<threads.h>、泛型函数、alignas/alignof、 noreturn、static_assert、可分析性扩展、对复数和虚数类型的扩展、匿名结构体与联合体、独占文件打开模式、 quick_exit
- 移除 gets
- 来自边界检查接口 TR:边界检查接口
- 来自 Unicode TR:char16_t、char32_t,及 <uchar.h>
- 2012:技术勘误 1(ISO/IEC 9899:2011/Cor 1:2012)(ISO 商店)
- 修正 DR 411
- 2013:安全代码规则 TS(ISO/IEC TS 17961:2013)(ISO 商店)(2012-12-26 草案)
- 2014:FP TS 部分 1:二进制浮点算术(ISO/IEC TS 18661-1:2014)(ISO 商店)(2013 草案)
- 提供对 C11 的更改(主要对附录 F),以覆盖所有基本要求及一些 IEC 60559:2011 的推荐(C11 构建于 IEC 60559:1989)
- 提供对 C11 的更改,以支持所有要求,加上一些 IEC 60559:2011 对十进制浮点算术的基本推荐。它替代了 ISO/IEC TR 24732:2009。
- 提供对 C11 的更改,以支持 IEC 60559:2011 对扩展浮点格式及交换格式的推荐,包括算术和非算术。
- 提供对 C11 的更改,以支持所有 IEC 60559:2011 推荐的数学运算,包括 π 单位的三角函数、平方根倒数、复利等。
- 提供对 C11 的更改,以支持所有 IEC 60559:2011 推荐的补充属性(求值模型、异常处理、可再现性等)
- 2018: C17(ISO/IEC 9899:2018)(最终草案)。
未来发展
- 未赋予 DR 状态的问题列表:(N2556 2020-08-02)
- 主条目:C23
- 下个主要 C 语言标准修订版
C23 中修正的缺陷报告(? 个缺陷) |
---|
参阅
外部链接
1. | C 语言的发展,作者 Dennis M. Ritchie |
2. | C99 标准基本原理 |