命名空间
变体
操作

C 的历史

来自 cppreference.cn
< c‎ | 语言

目录

[编辑] 早期 C

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

[编辑] 标准 C

  • 1983年:ANSI成立X3J11委员会
  • 1988年:The C Programming Language,第二版
  • 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)
  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_* pragmas、va_copytmpnam返回空值、setvbuf中的空指针、printf中的hhll长度说明符、snprintf_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技术报告(ISO/IEC TR 19769:2004)(ISO商店) (N1040 2003年11月7日草案)
  • 2007年:技术勘误3(ISO/IEC 9899:1999/Cor.3:2007)(N1256 2007年9月7日草案)
  • 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日草案)
  1. 线程感知内存模型、<stdatomic.h><threads.h>、类型通用函数、alignas/alignofnoreturnstatic_assert、可分析性扩展、对复数和虚数类型的扩展、匿名结构体和联合体、独占文件打开模式、quick_exit
  2. 删除了gets
  3. 来自边界检查接口技术报告:边界检查接口
  4. 来自Unicode技术报告:char16_tchar32_t<uchar.h>
  • 2012年:技术勘误1(ISO/IEC 9899:2011/Cor 1:2012)(ISO商店)
  • 2013年:安全编码规则技术规范(ISO/IEC TS 17961:2013)(ISO商店) (N1718 2013年5月30日)
  • 2014年:FP技术规范第一部分:二进制浮点算术(ISO/IEC TS 18661-1:2014)(ISO商店) (N1778 2013年草案)
  1. 提供了对C11(主要是附录F)的更改,涵盖了IEC 60559:2011的所有基本要求和一些建议(C11基于IEC 60559:1989)
  • 2015年:FP技术规范第二部分:十进制浮点算术(ISO/IEC TS 18661-2:2015)(ISO商店) (N1912 2015年草案)
  1. 提供了对C11的更改,以支持IEC 60559:2011对十进制浮点算术的所有要求以及一些基本建议。这取代了ISO/IEC TR 24732:2009。
  • 2015年:FP技术规范第三部分:交换和扩展类型(ISO/IEC TS 18661-3:2015)(ISO商店) (N1945 2015年草案)
  1. 提供了对C11的更改,以支持IEC 60559:2011对扩展浮点格式和交换格式(包括算术和非算术)的建议。
  • 2015年:FP技术规范第四部分:补充函数(ISO/IEC TS 18661-4:2015)(ISO商店) (N1950 2015年草案)
  1. 提供了对C11的更改,以支持IEC 60559:2011推荐的所有数学运算,包括以π为单位的三角函数、逆平方根、复利等。
  • 2016年:FP技术规范第五部分:补充属性(ISO/IEC TS 18661-5:2016)(ISO商店) (N2004 2016年草案)
  1. 提供了对C11的更改,以支持IEC 60559:2011推荐的所有补充属性(评估模型、异常处理、可重现性等)
主要文章:C17
C17中修复的缺陷报告 (54个缺陷)
  • 2023年 C23 (ISO/IEC 9899:2024)。C23是C标准的当前修订版。
主要文章:C23
C23中修复的缺陷报告(?个缺陷)

[编辑] 未来发展

  • 并行技术规范(草案N2017 2016-03-10)
  • 事务内存技术规范(草案N1961 2015-09-23)
  • C (最新草案n3467 2025-02-09)
  1. 未被授予DR状态的问题列表:(N2556 2020-08-02)
主要文章:C29 ?
下一个主要的C语言标准修订版

[编辑] 另请参阅

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

[编辑] 外部链接

1.  C语言的发展 作者:Dennis M. Ritchie
2.  C99标准的原理