gpt4 book ai didi

c - ISO C 标准定义了两类一致性实现

转载 作者:太空狗 更新时间:2023-10-29 14:54:10 26 4
gpt4 key购买 nike

我读了this关于 GCC 的官方手册。有时我在翻译文本时遇到问题。在第 6 页(第 2.1 章)我无法理解这样的文本片段:

The ISO C standard defines (in clause 4) two classes of conforming implementation. A conforming hosted implementation supports the whole standard including all the library facilities; a conforming freestanding implementation is only required to provide certain library facilities: those in <float.h>, <limits.h>, <stdarg.h>, and <stddef.h>; since AMD1, also those in <iso646.h>; since C99, also those in <stdbool.h> and <stdint.h>; and since C11, also those in <stdalign.h> and . In addition, complex types, added in C99, are not required for freestanding implementations. The standard also defines two environments for programs, a freestanding environment, required of all implementations and which may not have library facilities beyond those required of freestanding implementations, where the handling of program startup and termination are implementation-defined, and a hosted environment, which is not required, in which all the library facilities are provided and startup is through a function int main (void) or int main (int, char *[]). An OS kernel would be a freestanding environment; a program using the facilities of an operating system would normally be in a hosted implementation.

我不确定我是否理解正确...

我将重新表述我的理解方式:

  1. 存在两种 ISO C 标准实现:完整(称为符合托管实现)和轻量级(称为符合独立实现)。
  2. 存在两种环境(针对每个标准的实现):托管环境(针对完整标准)和独立环境(针对轻型标准)。

精简版用于操作系统开发。完整版适用于可在操作系统中运行的程序。

我不明白关于 main 的短语功能。

我要求解释这段文字。

最佳答案

两者兼而有之。

该标准定义了两个运行时环境。一个拥有所有的语言,加上标准运行时库的一小部分,再加上额外的实现定义的东西。这是一个独立环境,并且(如您所猜)旨在用于在裸机上进行编程,例如操作系统内核。

另一个更复杂的环境包括上述所有设施以及所有标准运行时库。这是一个托管环境,用于应用程序编程。

现在,实现需要包含独立环境的设施。如果仅此而已,它就称为独立实现。用于深度嵌入式微 Controller 的交叉编译器通常是独立的实现,因为许多标准 C 运行时没有意义或太大而不适合。

实现托管环境是可选的;如果一个实现提供了托管环境,它就被称为托管实现。托管实现必须提供独立环境,即只有独立实现的设施可用的编译模式。 (这种模式通常用于编译诸如 C 运行时本身之类的东西,其中大部分只是更多的 C。)

最后,main 的标准签名(int main(void)int main(int, char **))是一部分托管 环境。独立环境也可以使用这些签名,但它也可以将 main 的签名定义为任何它喜欢的签名(void main(void) 很常见)或使用入口点的不同名称。

关于c - ISO C 标准定义了两类一致性实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13710101/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com