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标准)正式发布
- 将现有实践规范化
- 新增特性: 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循环初始化子句中的声明、 // 注释、源代码中的通用字符名
- 移除了隐式函数声明和隐式 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年:浮点技术规范第一部分:二进制浮点算术(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标准制定依据 |