跳转到内容

C 编程/stddef.h

来自维基教科书,开放的书籍,开放的世界

stddef.h 是 C 编程语言标准库中的一个头文件,它定义了宏 NULL 和 offsetof 以及类型 ptrdiff_t、wchar_t 和 size_t[1]

在 C 中,以这种方式包含头文件 "stddef.h"

#include <stddef.h>

在 C++ 中,以这种方式包含头文件 "cstddef"

#include <cstddef>

命名空间

[编辑 | 编辑源代码]

头文件 "stddef.h" 将其定义放置在全局范围内;头文件 "cstddef" 将 size_tptrdiff_t 放置在命名空间 std 中。

一个宏,扩展为一个空指针常量。它可以根据编译器和语言定义为 ((void*)0)、0 或 0L。

offsetof(type, member)

[编辑 | 编辑源代码]

一个功能宏,用于确定指定结构类型中指示成员字段的字节偏移量。

类型 size_t

[编辑 | 编辑源代码]

类型 size_t 表示用于表示内存区域对象的大小以及用于取消引用数组元素的适当类型。它具有与实现相关的尺寸;通常但不一定,它在 32 位系统上具有 32 位表示,在 64 位系统上具有 64 位表示。它是无符号的。

此类型在某些实现中有一个名为 ssize_t 的带符号变体,它在 UNIX 头文件 "unistd.h" 中定义。对于 GNU C,类型 ssize_t 在 "stddef.h" 中定义,因此与 size_t 位于同一个文件中。

类型 wchar_t

[编辑 | 编辑源代码]

一个与实现相关的“宽字符”类型,它在 C++ 编程语言中是预定义的,但在 C 编程语言中需要头文件 "stddef.h" 或 "wchar.h"。

类型 ptrdiff_t

[编辑 | 编辑源代码]

类型 ptrdiff_t 是一种可以保存两个指针相减结果的类型,这两个指针指向同一个对象的两个项目。ptrdiff_t 的底层类型因实现而异。

一个对象可能大于 PTRDIFF_MAX。两个指针相减,如果它们的差大于 PTRDIFF_MAX / PTRDIFF_MIN,会导致未定义的行为。

参考资料

[编辑 | 编辑源代码]
  1. http://pubs.opengroup.org/onlinepubs/7908799/xsh/stddef.h.html
[编辑 | 编辑源代码]
华夏公益教科书