【发布时间】:2010-10-18 21:23:36
【问题描述】:
sizeof 是一个 C 关键字。它以名为size_t 的类型返回大小。但是,size_t不是关键字,而是主要在 stddef.h 和其他 C 标准头文件中定义。
假设您要创建一个不包含任何 C 标准头文件或库的 C 程序。 (例如,如果您正在创建 OS 内核。)现在,在这样的代码中,可以使用 sizeof(它是 C 关键字,因此它是 语言 的一部分),但它返回的类型 (size_t) 不可用!
这不是表示 C 标准规范中存在某种问题吗?你能澄清一下吗?
【问题讨论】:
-
许多头文件是完全安全和明智的,即使在操作系统内核中也是如此。您在内核中担心的问题是链接到库,不包括标头。
-
RBerteig:为了论证,假设我想创建一个只使用该语言的 C 程序,没有头文件/库,并且我想使用 sizeof。
-
您很可能需要在汇编中编写自己的实现库。如果没有标头和库(以及它们的相关函数),您将无法做很多事情。
-
标准标题是语言的一部分。许多确实定义了标准库的接口,并且有充分的理由不在内核或深度嵌入式系统中使用这些接口。但其他人主要定义与实现相关的有用内容:stddef.h、limits.h 是示例。
-
Chris 和 RBerteig:是的,但是让我们考虑一个不使用任何头文件/库的程序,只是做一些算术运算。