C17 标准

2025年1月7日 | 阅读 4 分钟

C 语言的标准是一个开放标准,称为 C17,之前称为 ISO/IEC 9899:2018。该标准于 2018 年 6 月正式发布,并在 2017 年完成。C17 标准(ISO/IEC 9899:2011)取代了 C11 标准,主要致力于澄清和修复错误,而不是添加新功能。C17 常被称为 C18,因为它是在 2017 年准备的,并于 2018 年发布。最终,该标准将被 C23 (ISO/IEC 9899:2023) 取代,预计将于 2024 年发布。

C23 是 C 语言标准的最新版本,此前称为 ISO/IEC 9899:2018 或 C17。它是对 C11 (ISO/IEC 9899:2011) 的小幅更新,没有提供许多新功能,而是专注于错误修复和澄清。

C17 的主要目标

C17 的几个主要目标如下:

  1. 错误修复和更正:C17 标准解决了 C11 标准中发现的错误和歧义。它旨在纠正问题并提高标准的整体清晰度,而不会添加任何重要的新功能。
  2. 错误修复和更正:C17 标准解决了 C11 标准中发现的错误和歧义。它旨在纠正问题并提高标准的整体清晰度,而不会添加任何重要的新功能。
  3. 稳定性和一致性:通过解决 C11 标准中的问题并保留其核心功能,C17 为开发人员提供了一个稳定和一致的基础,同时确保现有的 C11 代码保持有效并按预期运行。
  4. 合规性和互操作性:C17 通过帮助确保编译器和工具遵循标准,促进了各种 C 语言实现之间的一致性和统一行为。
  5. 移除已弃用的功能:为了进一步改进语言,C17 还移除了在早期标准中已被移除或进一步弃用的某些功能。然而,C17 专注于澄清内容,而不是添加任何新的弃用。
  6. 微调:为了提高一致性和可用性,对现有功能进行了一些小的修改。总的来说,这些都是旨在改进语言而不是改变其基本含义的小改动。
  7. 无新功能:与 C11 引入了线程和原子等重要新概念不同,C17 没有添加任何新功能。它更像是一个“维护版本”,重点在于完善和纠正错误。

比较视角

  1. C89/C90:原始的 ANSI C 标准,有时称为 C89 或 C90,是第一个标准化的 C 版本。尽管它没有包含后来标准中的许多元素,但它为语言奠定了基础。
  2. C99:C99 引入了可变长度数组、新的标准库函数和新的数据类型(如 long long int)等新功能。还存在一些有争议的更改。
  3. C11:添加了 _Noreturn_Static_assert,通过 Generic 关键字改进了 Unicode 支持,并专注于通过添加头文件来增强对多线程的支持。C11 的目标是在保持向后兼容的同时,为 C 带来更新。
  4. C17:主要是对 C11 的改进,重点在于澄清和错误修复,而不是新功能。

对开发的影响

  1. 一致性:C17 通过解决 C11 中的问题和歧义,帮助开发人员编写更一致、可预测的代码,从而降低遇到意外行为的可能性。
  2. 工具链:兼容 C17 的编译器和开发工具可确保代码符合改进后的标准,从而在各种平台和实现之间促进可靠性和兼容性。
  3. 遗留代码:C17 在修复错误而非重写代码的基础上,提供了一种在尽可能减少中断的情况下,保留和改进使用 C11 或更早标准创建的项目和代码库的方法。

C-17 的意义

C17 标准是 C 语言不断发展的重要组成部分。尽管它没有提供任何革命性的创新,但对于那些使用 C 进行系统编程、嵌入式系统和其他需要高性能的应用的开发人员来说,它是一个重要的改进。相反,它将稳定性和可靠性放在了首位。

通过纠正 C11 中的错误和歧义,C17 确保了语言保持稳定、易于管理且符合现代编程实践。因此,对于那些不需要集成可能具有破坏性的最新功能,但仍需要成熟标准的稳定性和成熟度的项目,C17 是首选。

结论

总之,C17 代表了 C 编程语言开发的一个重要里程碑,它在保持向后兼容性的同时,提供了更可靠、更稳定的语言版本。其对完善而非创新的关注,体现了该语言的成熟以及在系统编程领域的持久重要性。因此,C17 在 C 语言的稳定性和可靠性至关重要的行业中得到了广泛采用。