名稱空間
變體
操作

C 的歷史

來自 cppreference.com
< 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標準的原理