如果我使用sizeof和size_t,我是否应该总是包含stddef.h

时间:2010-04-09 05:17:37

标签: c sizeof size-t

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

非常感谢...

3 个答案:

答案 0 :(得分:33)

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

size_t在各种标头中定义:stddef.hstring.hstdlib.hstdio.h。包含其中任何一个就足以在代码中使用size_t

答案 1 :(得分:10)

不,你可以加一个标题,而标题又包含stddef.h

  

size_t定义应通过包含 stdlib.h 头文件提供给引用代码段。实际上,大多数实现在文件中按字面定义,而是 sub 包含文件 stddef.h ,例如标准GNU C编译器的库。 stddef.h直接包含应用程序代码是完全有效的,因此在需要或不需要此文件的其他成员的情况下可以替换stdlib.h。

Source

答案 2 :(得分:3)

在{c>中,size_t的定义来自多个标题之一:stddef.hstdio.hstdlib.hstring.htime.hwchar.h

编译器实现可以通过多种方式为此安排,但请注意,不能使用的一种方法是让编译器在您的后面包含其中一个标头返回 - 这不是允许C编译器执行的操作(C ++解除了这个限制,允许为了自己的目的包含任何标准头文件。)