C-什么是C实现?

时间:2019-04-15 14:17:12

标签: c implementation

您能从三个突出显示的表达式中得到启发,来解释一下到底是什么实现吗?

来自“ C Primer Plus”>语言标准

  

当前,有许多C实现可用。理想情况下,当您   编写一个C程序,它在任何实现上都应该工作,   提供它不使用机器特定的编程。为了这个   实际上,不同的实现需要符合   公认的标准

3 个答案:

答案 0 :(得分:6)

符合标准的C实现由一个编译器组成,该编译器按照标准的要求翻译编译单元,为标准所要求的所有功能提供标准库的实现,以及 something (通常是链接程序),将所有内容放在一起以构建可执行文件。实际上,该实现还包括运行生成的可执行文件所需的所有软件。

在谈到C开发环境时,我们通常会谈到编译器(gcc,clang,msvc)。在每个供应商系统中,您可能会有不同的实现,因为例如gcc或clang可以生成具有不同int大小(32或64位)并最终具有不同字节序的可执行文件。然后,每种配置都构成一个特定的实现。

为更加详尽,应注意的是,在所谓的独立执行环境中(相对于托管执行环境),支持标准库可能是可选的。在现实世界中,独立模式用于内核开发,因为在标准库中的所有功能可用之前,内核必须能够启动。否则,如果内核需要仅在完全加载时才能提供的功能,那么我们将遇到一个麻烦的问题……


参考:C11的n1570草案将实现定义为:

3.12  实现:
在特定翻译环境下运行的特定软件集 控制选项,用于执行程序的翻译并支持执行 特定执行环境中的功能

答案 1 :(得分:1)

实现是特定规范的应用程序。

例如,规范可以是ISO国际标准,而实现可以是gcc或clang;实现了标准规范的编译器以及标准库的实现。

答案 2 :(得分:1)

C通常由C编译器实现。在该段中,您可以相应地替换它。

使用更通用的术语“实现”的原因是,编译器可能包含多个前端,或者由不同的任务组成,或者从理论上讲,除了编译器可以想到的其他形式。

C标准是针对“抽象机器”定义的,该“抽象机器”的行为与标准描述的相同,但没有其他要求,并且定义了映射到实际机器的操作,以供实现者使用。