C 语言的历史
出自 cppreference.cn
目录 |
[编辑] 早期 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 中的空指针,printf 中的
hh
和ll
长度说明符,snprintf,_Exit,<tgmath.h>,类 POSIX 的 strftime 说明符 - 来自 C++:inline,混合声明和代码,for 循环的 init-clause 中的声明,// 注释,源代码中的通用字符名
- 移除了隐式函数和隐式 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 建议的所有补充属性(评估模型、异常处理、可再现性等)
- 2023年 C23 (ISO/IEC 9899:2024)。C23 是 C 标准的当前修订版。
C23 中修复的缺陷报告 (?个缺陷) |
---|
[编辑] 未来发展
- 未授予 DR 状态的问题列表:(N2556 2020-08-02)
- 主条目:C29 ?
- 下一个主要的 C 语言标准修订版
[编辑] 参见
C++ 文档 关于 C++ 历史
|
[编辑] 外部链接
1. | C 语言的开发,作者:Dennis M. Ritchie |
2. | C99 标准的理由 |