分享免费的编程资源和教程

网站首页 > 技术教程 正文

c语言的标准(c语言的标准函数名有哪些)

goqiw 2025-04-30 16:48:15 技术教程 3 ℃ 0 评论

C 语言作为一门历史悠久且广泛使用的编程语言,其发展过程中经历了多次标准化,以确保语言的统一性、可移植性和稳定性。这些标准定义了 C 语言的语法、语义以及标准库的功能。

以下是 C 语言的主要标准版本,按时间顺序排列:

* K&R C (非官方标准)

* 来源: 1978 年布莱恩·柯林汉(Brian Kernighan)和丹尼斯·里奇(Dennis Ritchie)合著的第一版《C 程序设计语言》(The C Programming Language)。

* 地位: 虽然不是正式的官方标准,但它是 C 语言最早的、影响最深远的描述,是早期 C 语言事实上的规范。现代 C 标准在此基础上进行了许多改进和扩展。

* C89 / C90 (ANSI C / ISO C)

* 名称: ANSI C (由美国国家标准协会制定) 或 ISO C (由国际标准化组织采纳)。

* 正式编号: ANSI X3.159-1989 (1989年发布),ISO/IEC 9899:1990 (1990年发布)。

* 地位: 这是第一个官方的、国际性的 C 语言标准。它奠定了现代 C 语言的基础,规范了许多 K&R C 中模糊或依赖于具体实现的行为。通常我们说的“标准 C”很多时候指的就是这个版本。C90 与 C89 内容基本完全一致。

* C95 (Amendment 1)

* 正式编号: ISO/IEC 9899:1990/Amd.1:1995 (1995年发布)。

* 地位: 这是对 C90 的一个小型修订和补充(修正案),增加了一些特性,如:

* 宽字符库 (<wchar.h>, <wctype.h>) 的改进。

* 增加了双字符组(Digraphs)。

* 一些宏定义的标准化。

* C99

* 正式编号: ISO/IEC 9899:1999 (1999年发布)。

* 地位: C 语言的一次重要修订,引入了大量新特性,旨在提高 C 语言的表达能力和与 C++ 的兼容性,并适应现代计算需求。主要特性包括:

* 内联函数 (inline functions)。

* 变量长度数组 (Variable Length Arrays - VLA)(在 C11 中变为可选特性)。

* 增加了 long long int 整数类型。

* 支持 单行注释 (//)。

* 布尔类型 (<stdbool.h>)。

* 精确宽度整数类型 (<stdint.h>)。

* 复数支持 (<complex.h>)。

* 指定初始化器 (Designated initializers)。

* 复合字面量 (Compound literals)。

* 改进的数学库 (<math.h>, <tgmath.h>)。

* 允许在代码块任意位置声明变量。

* C11

* 正式编号: ISO/IEC 9899:2011 (2011年发布)。

* 地位: 对 C99 的又一次修订,引入了一些现代编程语言的特性,并对部分 C99 特性进行了调整。主要特性包括:

* 多线程支持 (<threads.h>)。

* 原子操作 (<stdatomic.h>)。

* 类型泛型宏 (<tgmath.h> 在 C99 引入,C11 进一步完善)。

* 静态断言 (_Static_assert)。

* 匿名结构体和联合体。

* _Noreturn 函数说明符。

* 对齐控制 (<stdalign.h>, _Alignas, _Alignof)。

* Unicode 支持 (<uchar.h>)。

* 可选特性: VLA 和 _Complex 变为可选支持,新增可选的边界检查接口 (Annex K)。

* C17 (也常被称为 C18)

* 正式编号: ISO/IEC 9899:2018 (2018年发布)。

* 地位: 这主要是对 C11 的一个 技术修正和缺陷修复版本,并没有引入重要的新语言特性。它的目标是澄清 C11 标准中的模糊之处,并整合之前的技术勘误 (Technical Corrigenda)。因此,C17 通常被视为 C11 的稳定版本。目前 (截至 2025 年初),C17 是被各大编译器广泛支持和推荐的稳定 C 语言标准。

* C23

* 正式编号: ISO/IEC 9899:2024 (预计的正式发布编号,通常称为 C23)。

* 地位: C 语言的最新主要修订版本,已经完成制定,编译器正在逐步实现其特性。它旨在进一步现代化 C 语言,并引入许多开发者期待已久的功能。一些主要特性包括:

* 正式引入 nullptr 常量和对应的 nullptr_t 类型。

* 二进制整型常量 (如 0b101010) 和 printf/scanf 的 %b 格式说明符。

* 数字分隔符 (如 1'000'000)。

* bool, true, false 成为正式关键字 (不再需要 <stdbool.h>)。

* 属性语法 ([[attribute]])。

* typeof 操作符。

* 十进制浮点数类型 (_Decimal*)。

* 空初始化器 {}。

* 标准库增加 memccpy, strdup, strndup 等函数。

* 移除三字符组 (Trigraphs)。

* 移除 K&R 风格的函数定义。

总结:

* C 语言标准是不断演进的。

* C89/C90 是基础标准。

* C99 和 C11 引入了大量重要的新特性。

* C17 是 C11 的稳定和修正版,是当前广泛使用的标准。

* C23 是最新的标准,带来了更多现代化改进,正在逐渐被编译器支持。

在实际开发中,可以通过编译器选项(例如 GCC/Clang 的 -std=c99, -std=c11, -std=c17, -std=c2x 等)来指定希望遵循的 C 标准版本。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表