C 的历史
来自 cppreference.cn
目录 |
[编辑] 早期 C
- 1969年:B语言创建,基于BCPL,旨在替代PDP-7汇编语言作为Unix的系统编程语言
- 添加了运算符++、--、复合赋值,仍然像BCPL一样是无类型语言
- 1971年:将B语言移植到PDP-11时创建了NB(“新B”)
- 类型(int、char、数组和指针)、数组到指针的转换、编译为机器码
- 1972年:语言更名为C
- struct、运算符&&和||、预处理器、可移植I/O
- 1973年:Unix用C语言重写
- unsigned、long、union、枚举、增加类型安全
- 1978年:The C Programming Language,第一版
[编辑] 标准 C
- 1983年:ANSI成立X3J11委员会
- 1988年:The C Programming Language,第二版
- 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_* pragmas、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)
- 2004年:技术勘误2(ISO/IEC 9899:1999/Cor.2:2004)
- 2004年:Unicode技术报告(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年:边界检查接口技术报告(ISO/IEC TR 24731-1:2007)(ISO商店) (N1225 2007年3月28日草案)
- 2008年:嵌入式技术报告(ISO/IEC TR 18037:2008)(ISO商店) (N1021 2003年9月24日草案)
- 2009年:十进制浮点技术报告(ISO/IEC TR 24732:2009)(ISO商店) (N1241 2007年7月5日草案)
- 2009年:数学特殊函数技术报告(ISO/IEC TR 24747:2009)(ISO商店) (N1182 2006年8月2日草案)
- 2010年:动态分配函数技术报告(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
- 来自边界检查接口技术报告:边界检查接口
- 来自Unicode技术报告:char16_t、char32_t和<uchar.h>
- 2012年:技术勘误1(ISO/IEC 9899:2011/Cor 1:2012)(ISO商店)
- 修复了DR 411
- 2013年:安全编码规则技术规范(ISO/IEC TS 17961:2013)(ISO商店) (N1718 2013年5月30日)
- 2014年:FP技术规范第一部分:二进制浮点算术(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标准的原理 |