C 的歷史
來自 cppreference.com
目錄 |
[編輯] 早期 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標準的原理 |