如果我在我的代码中使用sizeof
运算符并使用size_t
,我是否必须包含stddef.h
?我没有包含stddef.h
,我的代码在没有警告的情况下编译MVS2008和Borland C ++ BuilderX。
非常感谢...
答案 0 :(得分:33)
sizeof()
虽然看起来像一个函数调用,但实际上是一个运算符并且是语言核心的一部分。不需要包括。
size_t
在各种标头中定义:stddef.h
,string.h
,stdlib.h
和stdio.h
。包含其中任何一个就足以在代码中使用size_t
。
答案 1 :(得分:10)
不,你可以加一个标题,而标题又包含stddef.h
size_t定义应通过包含 stdlib.h 头文件提供给引用代码段。实际上,大多数实现不在文件中按字面定义,而是 sub 包含文件 stddef.h ,例如标准GNU C编译器的库。 stddef.h直接包含应用程序代码是完全有效的,因此在需要或不需要此文件的其他成员的情况下可以替换stdlib.h。
答案 2 :(得分:3)
在{c>中,size_t
的定义来自多个标题之一:stddef.h
,stdio.h
,stdlib.h
,string.h
,time.h
或wchar.h
。
编译器实现可以通过多种方式为此安排,但请注意,不能使用的一种方法是让编译器在您的后面包含其中一个标头返回 - 这不是允许C编译器执行的操作(C ++解除了这个限制,允许为了自己的目的包含任何标准头文件。)