【问题标题】:Pure C vs Kernel C vs classic C [closed]纯 C 与内核 C 与经典 C [关闭]
【发布时间】:2016-04-26 07:30:34
【问题描述】:

我是大学生的最后一年,我发现自己处于令人困惑的境地,尽管我从概念上理解它们之间存在一些细微差别,就像在经典 C 中函数没有原型一样,谢天谢地不再使用,我无法确定这三者之间的精确区别。
我想要一些正式的定义,最好注明书面的论文来源,如果有的话:

  • Pure C:这是什么意思,因为我已经看到它被广泛使用,或者什么时候应该使用它而不被误解
  • 内核 C:如果内核 C 和纯 C 在语言特性方面方面存在任何差异。
  • classic C:这里我指的是K&R C,除了legacy支持还有什么实际用途吗?它对教学目的有用吗?

用于识别(微小但具体的)差异等的任何其他信息或指南。如果没有(或几乎没有)显着差异,我将非常感谢提供这样的定义。

注意
我问的不是 C++,因为缺少更好的词、超集或任何其他继承某些语法或格式的 C 相关语言。
我不是在谈论 ANSI C99/C1X 标准,就像编写代码的方式/风格一样,我也不是指其他库。更具体地说,例如,C11 允许 匿名 structuresunions,这是一个与问题有关的功能。 我只关注语言本身及其特性,而不是试图讨论库或编译器。
如果现在认为 GNU/POSIX/ANSI/etc 包含我们所说的 C,那么术语不应该是 GNU 语言吗?
只是为了澄清这一点,这个问题并不是要记录语言的历史。

【问题讨论】:

  • 您必须解释这些术语的含义,它们不是标准术语。
  • “经典C”是指"K&R C吗? “纯C”是指the ISO/IEC standardized C (also known as ANSI C)? “内核 C”是什么意思?
  • “某种列表,或识别(微小但具体的)差异的指南” 下载 C11 标准草案,阅读第 13 页。涵盖了自第一个标准以来的所有更改。在 C90 之前允许的内容现在不应该引起太大的兴趣。
  • @RastaJedi 内核确实遵守一些规则,但内核 C 没有任何标准 POSIX 库,它有一个特殊的指令/库超集。如果我弄错了,请纠正我。
  • 当我看到人们说“纯C”时,那是因为他们的意思是“C”,但他们认为“C”本身就是“C/C++”的缩写

标签: c standards definition


【解决方案1】:

C 语言已被 ISO 标准化。它现在作为 ISO 9899 发布。该标准会不时更新,因此该标准有不同的版本。最值得注意的是 ISO 9899:1990ISO 9899:1999ISO 9899:2011,通常称为 C89/C90、C99 和 C11。

在被 ISO 采用之前,该语言主要由原作者定义,通常称为 K&R C。

编辑: 由于 OP 澄清它不是关于语言的历史或标准化,我可以补充一点,Linux 内核目前使用 GNU89 作为语言基础(在 GCC在 5.0 版本中将默认值更改为 GNU11)。

【讨论】:

  • 请注意,甚至在 K&R 首次对 C 进行基本标准化之前(在 ANSI 之前),甚至还有更老的 C 经历了许多变化。我不确定 OP 是否意味着经典 C 甚至在 K&R 时代之前?但可能不是……?
  • 被否决,因为 OP 明确表示他不是在询问 C 的标准化。
  • @RastaJedi 标准化之前的一切通常被称为“K&R C”。 K&R书第一版之后也没有标准,它只是人们唯一拥有的经典形式。如果在本书发行前语言没有明确说明,无论如何,R 先生应该为此负责。
  • @FUZxxl Mea culpa 因为我不够具体。我添加了一些细节。
  • @Lundin 是的,我并不是说 K&R 是第一个“官方”标准化 C,而是在 ANSI C 之前它被称为一种标准。很抱歉如此松散地使用该术语。
猜你喜欢
  • 2021-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多