C 语言标准简介

C 语言标准发布版本的演进过程是一段充满创新与演进的历程,以下是详细的演进过程:

一、诞生与早期发展

  • 1969 年至 1973 年:C 语言在美国电话电报公司(AT&T)贝尔实验室开始研发。C 语言的诞生与 UNIX 操作系统的开发密不可分,原先的 UNIX 操作系统都是用汇编语言写的,1973 年 UNIX 操作系统的核心用 C 语言改写,从此以后,C 语言成为编写操作系统的主要语言。
  • 1972 年:C 语言最重要的研发时期,根据 C 语言的发明者丹尼斯·里奇(Dennis Ritchie)所说,这是 C 语言发展的关键一年。
  • 1978 年:美国电话电报公司(AT&T)贝尔实验室正式发布 C 语言。同年,丹尼斯·里奇(Dennis Ritchie)和布莱恩·科尔尼干(Brian Kernighan)合作推出了《The C Programming Language》的第一版,该书成为 C 语言方面最权威的教材之一,人们称这个版本的 C 语言为“K&R C”。
  • 期间 C 语言一直不断的发生细微的变化,各编译器厂商也有自己的扩展,这个过程一直持续到 20 世纪 80 年代末。

二、标准化阶段

  • 1983 年:美国国家标准局(American National Standards Institute,简称 ANSI)成立了一个委员会,负责起草关于 C 语言的标准草案。
  • 1989 年:C 语言标准被 ANSI 正式通过,成为美国国家标准,被称为 ANSI C,有时也被称为 C89 或 C90。
  • 1990 年:在 ISO/IEC JTC1/SC22/WG14(ISO/IEC 联合技术第 I 委员会第 22 分委员会第 14 工作组)的努力下,ISO 批准了 ANSI C 成为国际标准,于是 ISO C(又称为 C90)诞生了。除了标准文档在印刷编排上的某些细节不同外,ISO C(C90)和 ANSI C(C89)在技术上完全一样。
    • C89 的主要改动:
      • 定义了 C 标准库;
      • 新的预处理命令和特性;
      • 函数原型(prototype);
      • 新关键字:const、volatile、signed;
      • 宽字符、宽字符串和多字节字符;
      • 转化规则、声明(declaration)、类型检查的改变。
  • 1995 年:C 程序设计语言工作组对 C 语言进行了一些修改,这是对 C89 的一个修订和扩充,称为“C89 with Amendment 1”或 C95,成为后来的 1999 年发布的 ISO/IEC 9899:1999 标准,通常被称为 C99。C99 引入了许多新的特性和改进,如复杂数类型、以及对 C 语言标准库的扩展等。
    • C95 的主要改动:
      • 3 个新标准头文件:iso646.h、wctype.h、wchar.h
      • 一些新的标记(token)和宏(macro);
      • 一些新的 printf/scanf 系列函数的格式符;
      • 增加了大量的宽字符和多字节字符函数、常数和类型。
    • C99 的主要改动:
      • 对内联函数的支持
      • 复数(complex);
      • 整数(integer)类型扩展;
      • 可变长度数组(VLA);
      • Boolean 类型;
      • 非英语字符集的更好支持;
      • 浮点类型的更好支持;
      • 提供全部类型的数学函数;
      • C++ 风格注释(//)。

三、现代化阶段

  • 2011 年:国际标准化组织(ISO)和国际电工委员会(IEC)采纳了新的 C 语言标准,名叫 ISO/IEC 9899:2011,简称 C11 标准。C11 增加了对多线程的支持(通过 _Atomic 和 _Thread_local 关键字)、字节对齐说明符、泛型机制(generic selection)、静态断言、对 Unicode 字符的支持等,并改进了对编译器诊断信息的支持。
  • 2018 年:发布了 C17 标准,主要是对 C11 标准的修订和更新,旨在进一步改进语言的特性和可用性。然而,与 C11 相比,C17 并没有引入新的语言特性或库功能,而是主要对 C11 标准中的一些小问题进行了修正和澄清。
  • C2X:一个正在进行中的标准化过程,旨在对 C 语言进行进一步的改进和更新。虽然 C2X 还在开发中,但已经计划引入一些新的特性,如改进的泛型编程支持、扩展的标准库功能等。然而,由于 C2X 尚未正式发布,因此其具体特性和发布时间仍待确定。

综上所述,C 语言的标准版本经历了从 K&R C 到 C2X(计划中)的多个阶段,每个版本都在前一个版本的基础上进行了扩展和改进。这些变化旨在提高 C 语言的表达能力、程序员的开发效率和程序的可靠性。

备注:

因个人习惯和能力所限,该文档内容若存在表述不合理或错误之处,请大家留言多多指正

版权声明:本文来自网络内容进行整理汇总,本文遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明