30

如果我在我的代码中使用sizeof运算符并使用size_t,我是否必须包含stddef.h?我没有包含stddef.h,并且我的代码在使用 MVS2008 和 Borland C++ BuilderX 编译时没有警告。

非常感谢...

4

3 回答 3

34

sizeof(),虽然看起来像一个函数调用,但实际上是一个运算符和语言核心的一部分。不需要包含。

size_t在各种标题中定义:stddef.hstring.hstdlib.hstdio.h. 包括其中任何一个都足以size_t在您的代码中使用。

于 2010-04-09T05:20:16.583 回答
11

不,您可以包含一个标题,该标题又包含 stddef.h

size_t 定义应通过包含stdlib.h头文件提供给引用的代码片段。事实上,大多数实现并没有在这个文件中逐字定义它,而是 像 GNU C 编译器的标准库那样子包含文件stddef.h 。为应用程序代码直接包含 stddef.h 是完全有效的,因此可以在不需要或不需要此文件中的其他成员的情况下替换 stdlib.h。

来源

于 2010-04-09T05:20:55.463 回答
3

在 c 中, for 的定义来自size_t以下几个标题之一:stddef.hstdio.hstdlib.h、或。string.htime.hwchar.h

编译器实现可以为此安排多种方式,但请注意,一种不能使用的方式是让编译器在背后为您包含这些头文件之一 - 这不是 C 编译器所允许的做(C++ 取消了这个限制,它允许包含任何标准头文件用于自己的目的)。

于 2010-04-09T05:37:06.377 回答