Namespaces
Variants

History of C

From cppreference.net

目录

早期 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标准)正式发布
  1. 将现有实践规范化
  2. 新增特性: volatile , enum , signed , void , 区域设置
  3. 源自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)( 在线商店
  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. 新特性: 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 格式说明符
  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 / alignof noreturn static_assert 、可分析性扩展、复数与虚数类型扩展、匿名结构体与联合体、独占文件打开模式、 quick_exit
  2. 移除 gets
  3. 来自边界检查接口技术规范:边界检查接口
  4. 来自Unicode技术规范: char16_t char32_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年:浮点技术规范第一部分:二进制浮点算术(ISO/IEC TS 18661-1:2014)( ISO商店 )( N1778 2013年草案)
  1. 提供了对 C11(主要是附录 F)的修改,涵盖了 IEC 60559:2011 的所有基本要求和部分建议(C11 基于 IEC 60559:1989 构建)
  • 2015: FP TS 第2部分:十进制浮点运算 (ISO/IEC TS 18661-2:2015) ( ISO 商店 ) ( N1912 2015草案)
  1. 提供了对 C11 的修改,以支持 IEC 60559:2011 关于十进制浮点运算的所有要求及部分基础建议。此项更新取代了 ISO/IEC TR 24732:2009。
  • 2015年:FP TS 第3部分:交换与扩展类型 (ISO/IEC TS 18661-3:2015) ( ISO 商店 ) ( N1945 2015草案)
  1. 提供了对 C11 的修改,以支持 IEC 60559:2011 关于扩展浮点格式及交换格式(包括算术和非算术格式)的建议。
  • 2015年:FP TS 第4部分:补充函数 (ISO/IEC TS 18661-4:2015) ( ISO 商店 ) ( N1950 2015草案)
  1. 提供了对 C11 的修改,以支持 IEC 60559:2011 推荐的所有数学运算,包括以π为单位的三角函数、反平方根、复利计算等。
  • 2016年:FP TS 第5部分:补充属性(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 (最新草案 n3550 2025-05-04)
  1. 未授予DR状态的问题列表:( N2556 2020-08-02)
主条目:C29 ?
下一版主要C语言标准修订

参见

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

外部链接

1. C语言的发展历程 —— Dennis M. Ritchie 著
2. C99标准制定依据