首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> C 語言問答

C語言與 ANSI C 標準的區別與聯繫:從 K&R 到 C23 的演進

     編輯:C 語言問答

名詞釐清

  • C語言: 一門程式語言的統稱,包含所有方言、擴展、編譯器實現。
  • ANSI C (C89/C90): 1989 年 ANSI 標準化,1990 年 ISO 採納 (ISO/IEC 9899:1990),確立了「標準 C」基線,規範了關鍵字、標準庫、語法語義,保證跨平台可移植性。

關鍵演進里程碑

標準年份核心新增特性
K&R C1978無標準庫原型、無 void、無 const、函式定義舊式語法
C89/C90 (ANSI C)1989/1990標準庫、函式原型、void、const、volatile、locale、宽字元
C991999// 註解、inline、restrict、_Bool、_Complex、VLA、stdint.h、inttypes.h、stdbool.h、指定初始化器、snprintf
C112011多執行緒 ``、原子操作 ``、泛型選擇 `_Generic`、靜態斷言 `_Static_assert`、邊界檢查介面 Annex K、對齊 ``
C17/C182017/2018修正 C11 勘誤,無新功能
C232024typeof、auto (推導)、`[[attributes]]`、#embed、#warning、constexpr、位精確整數類型、nullptr、__has_c_attribute

實務建議

  • 嵌入式/舊專案維護: 可能受限於編譯器僅支援 C89/C90,避免使用 C99+ 特性(VLA、指定初始化器、`` 等)。
  • 現代應用開發: 要求編譯器支援 C11 或 C17(GCC 5+、Clang 3.5+、MSVC 19.2+ / VS2019 16.6+),啟用 `-std=c11` 或 `/std:c11`,享受型別安全、執行緒、原子操作等現代設施。
  • 跨平台庫作者: 以 C99 為基線,可選用 C11 特性並提供回退實現,確保廣泛相容。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved