纯 C vs 内核 C vs 经典 C
Pure C vs Kernel C vs classic C
我是大学生的最后一年,我发现自己处于一种令人困惑的境地,尽管我从概念上理解它们之间存在一些细微差别,比如在经典 C 中,函数没有原型,谢天谢地不再使用,我无法确定这三者之间的那些精确区别。
我想要一些正式的定义,最好注明书面论文来源,如果有的话:
- Pure C: 这是什么意思,因为我看到它被广泛使用,或者什么时候应该使用它而不会被误解
- Kernel C:如果在语言特性。
的意义上,Kernel C 和 Pure C 之间是否存在任何差异
- classic C:这里我指的是K&R C,除了legacy support还有什么实际用途吗?它对教学目的有用吗?
用于识别(微小但具体的)差异等的任何其他信息或指南。如果没有(或几乎没有)明显的差异,我将非常感谢给出这样的定义。
注:
我不是在问 C++,因为缺少更好的词、超集或任何其他 C 相关语言,它继承了一些语法或格式.
我既不是在谈论 ANSI C99/C1X 标准,如 way/style 编写代码,也不是指其他库。更具体的,举个例子,C11允许anonymousstructures
和unions
,这是一个feature,它涉及这个问题。
我的重点只是语言 本身及其特性 ,而不是试图讨论库或编译器。
如果 GNU/POSIX/ANSI/etc 现在被认为包括我们所说的 C,那么术语不应该是 GNU 语言吗?
只是为了澄清这一点,这个问题并不是要写语言的历史。
C语言被ISO标准化。现在发布为 ISO 9899。该标准会不时更新,因此存在不同版本的标准。最值得注意的是 ISO 9899:1990
、ISO 9899:1999
和 ISO 9899:2011
,通常称为 C89/C90、C99 和 C11。
在被 ISO 采纳之前,该语言主要由原作者定义,通常称为 K&R C。
编辑: 由于 OP 澄清它与语言的历史或标准化无关,我可以补充说 Linux 内核目前使用 GNU89 作为语言基础(当 GCC 在 5.0 版本中将默认值更改为 GNU11 时明确表示)。
我是大学生的最后一年,我发现自己处于一种令人困惑的境地,尽管我从概念上理解它们之间存在一些细微差别,比如在经典 C 中,函数没有原型,谢天谢地不再使用,我无法确定这三者之间的那些精确区别。
我想要一些正式的定义,最好注明书面论文来源,如果有的话:
- Pure C: 这是什么意思,因为我看到它被广泛使用,或者什么时候应该使用它而不会被误解
- Kernel C:如果在语言特性。 的意义上,Kernel C 和 Pure C 之间是否存在任何差异
- classic C:这里我指的是K&R C,除了legacy support还有什么实际用途吗?它对教学目的有用吗?
用于识别(微小但具体的)差异等的任何其他信息或指南。如果没有(或几乎没有)明显的差异,我将非常感谢给出这样的定义。
注:
我不是在问 C++,因为缺少更好的词、超集或任何其他 C 相关语言,它继承了一些语法或格式.
我既不是在谈论 ANSI C99/C1X 标准,如 way/style 编写代码,也不是指其他库。更具体的,举个例子,C11允许anonymousstructures
和unions
,这是一个feature,它涉及这个问题。
我的重点只是语言 本身及其特性 ,而不是试图讨论库或编译器。
如果 GNU/POSIX/ANSI/etc 现在被认为包括我们所说的 C,那么术语不应该是 GNU 语言吗?
只是为了澄清这一点,这个问题并不是要写语言的历史。
C语言被ISO标准化。现在发布为 ISO 9899。该标准会不时更新,因此存在不同版本的标准。最值得注意的是 ISO 9899:1990
、ISO 9899:1999
和 ISO 9899:2011
,通常称为 C89/C90、C99 和 C11。
在被 ISO 采纳之前,该语言主要由原作者定义,通常称为 K&R C。
编辑: 由于 OP 澄清它与语言的历史或标准化无关,我可以补充说 Linux 内核目前使用 GNU89 作为语言基础(当 GCC 在 5.0 版本中将默认值更改为 GNU11 时明确表示)。