C的历史

来自cppreference.com
< c‎ | language

目录

[编辑] 早期C

  • 1969: B基于BCPL创建,以作为Unix的系统程序语言替代PDP-7汇编器
  • 增加运算符++、--、复合赋值,保持为类BCPL的无类型语言
  • 1971:NB(新“B”)创建于将B移植到PDP-11时
  • 类型(int、char、数组与指针)、数组到指针转换、到机器码的编译
  • 1972:语言更名为C
  • 结构体、运算符&&及||、预处理器、可移植I/O
  • 1973:以C重写
  • 无符号整数、long、联合体、枚举、增强的类型安全
  • 1978:《C程序语言》(The C Programming Language),第1版

[编辑] 标准C

  • 1983:ANSI建立X3J11委员会
  • 1988:《C程序语言》(The C Programming Language),第2版
  • 1989:C89,ANSI C标准出版
  1. 代码化的既存实践
  2. 新特性:volatile、enum、有符号整数、void、本地环境
  3. 来自C++:const、函数原型
  • 1990:C90,ANSI C标准被接纳为ISO/IEC 9899-1990
  • 1995:C95(ISO/IEC 9899 AM1)(在线商店
  1. 多字节字符支持(wchar_t及所有宽及多字节函数、 wchar.h、 wctype.h,及对既存头文件的添加与对应流I/O的更改等)
  2. 双标符,iso646.h,
  • 1995:技术勘误1(ISO/IEC 9899 TCOR1)
  • 1996:技术勘误2(ISO/IEC 9899 TCOR2)
  • 1999:C99(ISO/IEC 9899:1999) ()
  1. 新特性:_Bool、 long long、 stdint.h、 inttypes.h、 restrict、复合字面量、变长度数组、伸缩数组成员、指代初始化器、 fenv.h、变参数宏、复数、 __func__、十六进制浮点格式(%a)、lconv的货币格式化、 isblank、窄与宽字符串字面量的连接、枚举的尾逗号、类函数宏的空参数、 STDC_* pragma、 va_copy、 tmpnam的空返回、 setvbuf中的空指针、printf的hh与ll长度指定符、 snprintf、 _Exit、 tgmath.h、类POSIX strftime指定符
  2. 来自C++:inline、声明与代码混合、for循环的init子句中的声明、//注释、源代码中的通用字符名
  3. 移除隐式函数声明和隐式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设为过时
  1. 具备线程的内存模型、stdatomic.h、threads.h、泛型函数、 _Alignas/_Alignof、 _Noreturn、 _Static_assert、可分析性扩展、对复数和虚数类型的扩展、匿名结构体与联合体、独占文件打开模式、 quick_exit
  2. 移除gets
  3. 来自边界检查接口TR:边界检查接口
  4. 来自Unicode TR:char16_t、char32_t,及uchar.h
  • 2012:技术勘误1(ISO/IEC 9899:2011/Cor 1:2012)(ISO商店
  • 2013:安全代码规则TS(ISO/IEC TS 17961:2013)(ISO商店)(2012-12-26
  • 2014:FP TS部分1:二进制浮点算术(ISO/IEC TS 18661-1:2014)(ISO商店)(2013方案
  1. 提供对C11的更改(主要对附录F),以覆盖所有基本要求及一些IEC 60559:2011的推荐(C11构建于IEC 60559:1989)
  • 2015:FP TS部分2:十进制浮点算术(ISO/IEC TS 18661-2:2015)(ISO商店) (2015方案
  1. 提供对C11的更改,以支持所有要求,加上一些IEC 60559:2011对十进制浮点算术的基本推荐。它替代了ISO/IEC TR 24732:2009。
  • 2015:FP TS部分33:交换及扩展类型(ISO/IEC TS 18661-3:2015)(ISO商店)(2015方案
  1. 提供对C11的更改,以支持IEC 60559:2011对扩展浮点格式及交换格式的推荐,包括算术和非算术。
  • 2015:FP TS部分4:补充的函数(ISO/IEC TS 18661-4:2015)(ISO商店)(2015方案
  1. 提供对C11的更改,以支持所有IEC 60559:2011推荐的数学运算,包括π单位的三角函数、平方根倒数、复利等。
  • 2016:FP TS部分5:补充的属性(ISO/IEC TS 18661-5:2016)(ISO商店)(2016方案
  1. 提供对C11的更改,以支持所有IEC 60559:2011推荐的补充属性(求值模型、异常处理、可再现性等)

[编辑] 未来发展

  • 并行TS(方案n2017 2016-03-10)
  • 事务性内存TS(方案n1961 2015-09-23)
  • C2x 下一个C语言标准版本

[编辑] 参阅

C++的历史C++ 文档

[编辑] 参考