C 语言历史
来自 cppreference.com
目录 |
[编辑] 早期 C
- 1969: B 语言诞生,基于 BCPL,用于替换 PDP-7 汇编语言作为 Unix 的系统编程语言
- 添加了运算符 ++, --,复合赋值,仍然像 BCPL 一样是无类型语言
- 1971: 在将 B 移植到 PDP-11 时创建了 NB(“new B”)
- 类型(int,char,数组和指针),数组到指针的转换,编译为机器代码
- 1972: 语言更名为 C
- struct,运算符 && 和 ||,预处理器,可移植 I/O
- 1973: Unix 用 C 重写
- unsigned,long,union,枚举,提高了类型安全性
- 1978: 《C 编程语言》第一版
[编辑] 标准 C
- 1983: ANSI 成立了 X3J11 委员会
- 1988: 《C 编程语言》第二版
- 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),lconv 中的货币格式,isblank,窄字符串和宽字符串字面量的连接,枚举中的尾随逗号,函数式宏中的空参数,STDC_* 编译指示,va_copy,tmpnam 的空返回,setvbuf 中的空指针,
hh
和ll
长度说明符在 printf,snprintf,_Exit 中,<tgmath.h>,类 POSIX 的 strftime 说明符 - 来自 C++:inline,混合声明和代码,for 循环初始化语句中的声明,// 注释,源代码中的通用字符名
- 删除了隐式函数和隐式 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 日草案)
- 已弃用 gets
- 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 日草案)
- 线程感知内存模型,<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 商店)(N1718 2013 年 5 月 30 日)
- 2014: FP TS 第 1 部分:二进制浮点运算(ISO/IEC TS 18661-1:2014)(ISO 商店)(N1778 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 建议的所有补充属性(评估模型,异常处理,可重现性等)
[编辑] 未来发展
- 未授予 DR 状态的问题列表:(N2556 2020-08-02)
- 主条目:C23
- 下一个主要的 C 语言标准修订版
C23 中修复的缺陷报告(? 缺陷) |
---|
[编辑] 另请参阅
C++ 文档 关于 C++ 历史
|
[编辑] 外部链接
1. | C 语言的开发 by Dennis M. Ritchie |
2. | C99 标准的理由 |