C语言主要的国际标准:C99 C11 C17/C18 C23

发布时间:2025-04-28      访问量:35
C语言国际标准由国际标准化组织(ISO)和国际电工委员会(IEC)联合制定,以下是C语言发展历程中具有重要意义的几个国际标准:

C89/C90
- **标准简介**:C89是C语言的第一个官方标准,由美国国家标准协会(ANSI)于1989年制定,因此也被称为ANSI C。之后该标准被ISO采纳,于1990年发布为ISO/IEC 9899:1990,称为C90。这两个标准基本内容一致,只是在一些细节上存在差异。
- **主要特性**:
- 引入了标准库,包括输入输出(stdio.h)、字符串处理(string.h)、内存管理(stdlib.h)等。
- 定义了函数原型,要求在使用函数之前必须声明函数的参数类型和返回值类型。
- 支持多文件编程,通过头文件和源文件的分离来组织代码。
C99
- **标准简介**:ISO/IEC 9899:1999,简称C99,于1999年发布。它在C89/C90的基础上进行了大量的扩展和改进,旨在提高C语言的表达能力和编程效率。
- **主要特性**:
- 支持变长数组(VLA),允许在声明数组时使用变量指定数组的长度。
- 引入了单行注释(以`//`开头),提高了代码的可读性。
- 支持复合字面量,允许在表达式中直接创建匿名的结构体和数组。
- 增加了对复数的支持,引入了`complex`类型。
- 改进了标准库,增加了一些新的函数和宏,如`snprintf`、`fscanf`等。

C11
- **标准简介**:ISO/IEC 9899:2011,即C11,于2011年发布。它在C99的基础上进一步完善,增强了C语言的安全性和可移植性。
- **主要特性**:
- 引入了原子类型和原子操作,支持多线程编程,提高了并发编程的安全性。
- 支持静态断言(`_Static_assert`),允许在编译时进行断言检查。
- 增加了`_Noreturn`函数说明符,用于标记不会返回的函数。
- 改进了Unicode支持,引入了`char16_t`和`char32_t`类型,用于处理UTF-16和UTF-32编码的字符串。

C17/C18
- **标准简介**:C17(ISO/IEC 9899:2018)是C11的一个小修订版本,于2018年发布。C18只是C17的一个别名,没有实质性的技术差异。
- **主要特性**:C17主要是对C11标准中的一些问题进行了修正和澄清,没有引入新的语言特性。它进一步提高了标准的一致性和可移植性。

C23
- **标准简介**:ISO/IEC 9899:2023,即C23,是C语言的最新标准。它在之前标准的基础上进行了进一步的改进和扩展,旨在提高C语言的现代化程度和编程效率。
- **主要特性**:
- 引入了`stdatomic.h`中的原子引用计数类型和操作,简化了并发编程。
- 支持`for`循环中的初始化器声明多个变量。
- 增加了新的字符串处理函数,如`strdup`、`strndup`等。

这些标准反映了C语言的发展历程和不断演进的过程,随着时间的推移,C语言的功能和性能不断得到提升。在实际编程中,你可以根据项目的需求和编译器的支持情况选择合适的标准。
堆内存
多线程
strdup
初始化器
冒泡排序
增删改查
BufferedReader
输入输出
面向对象
生命周期
闭包的概念
原型链
Flask
mysql-connector-python
单例模式
浅拷贝
隔离级别
索引
InnoDB
左连接
聚合函数
PuTTY
TRUNCATE
str_starts_with_many
DateTime
array_combine
闭包的概念