C 有 32 个还是 44 个关键字?

Does C have 32 or 44 keywords?

ISO/IEC 9899:2017 C N2176 文档 link: https://files.lhmouse.com/standards/ISO%20C%20N2176.pdf

网上有很多资料说C语言有32个关键字,但是这个文档(我觉得是草稿版,但是和之前的版本相比没有太大的变化,对吧?) 有 44 个词 定义为 C 语言的关键字

请解释一下。

============================================= ===============

Link 来源说C语言有32个关键字:

  1. https://www.programiz.com/c-programming/list-all-keywords-c-language
  2. https://tutorials.webencyclop.com/c-language/c-keyword/
  3. https://www.educba.com/c-keywords/
  4. https://www.javatpoint.com/keywords-in-c
  5. https://beginnersbook.com/2014/01/c-keywords-reserved-words/
  6. https://www.phptpoint.com/c-keywords/
  7. https://www.guru99.com/c-tokens-keywords-identifier.html
  8. https://fresh2refresh.com/c-programming/c-tokens-identifiers-keywords/
  9. https://www.w3schools.in/c-tutorial/keywords/

注意:其中一些站点对初学者学习 C 语言的基本概念和术语非常有用。

  • 声称 C 中有“32”个关键字指的是 1989 年 C 的原始 ANSI 指定版本,又名 C89。
    • 因为这是 Internet,而且因为 真实的 C 规范落后于 ISO's ridiculous paywall 大多数如此倾向的人可能无法对声明进行事实核查。
    • 这不是一个值得事实核查的声明:一种语言中的关键字数量完全是琐事无关紧要。
  • 您链接的 ISO/IEC 9899 规范指的是 C17(2017 年提议的更新 C 规范),它比 C89 晚了 28 年。
  • 编程语言的未来更新版本引入新关键字也就不足为奇了。

从历史上看,当 C 被引入时,人们 对其极简语法以及该语言的设计如何通过实现功能有效 具体化 印象深刻作为 库功能 而不是 语言功能 这就是使 C 保持简单并有助于减轻每种语言的设计者对 功能蔓延 [= 的恐惧的原因40=].

相比之下,C 的早期同时代语言(如 COBOL)选择将功能作为第一个 class 特性实现到他们自己的语言中,这就是为什么 COBOL has over 300 keywords; so I'll admit that using the stark difference in keyword-count does serve as a proxy for language-complexity and by extension: a way to almost quantify good design. But using it as the basis for comparing languages today in 2021 is of limited-utility as the most relevant programming languages today1 已经受到启发C 或以某种方式派生自它,它们都共享 C 在库中而不是在语言中做事的决定,因此 所有 与 COBOL 相比,这些语言同样具有较低的关键字计数,SQL,等等,所以这就是为什么 C 的关键字计数不再有趣了。


1:受 C 启发或衍生的语言 in use today:C++、Objective-C、Java、Groovy、Swift、C#、JavaScript、TypeScript、Go、PHP、Perl。其他不以 C 为模型的流行语言(如 Haskell、OCaml 等)do 共享 C 的 library-first 理念,但我不能说它是否起源于 C - 但我觉得选择 library-first 设计的语言是不可避免的:实现语言特性的成本很容易是它的十倍实现库功能。