C99标准库之 <stddef.h>(中文)
以下类型和宏定义在标准头文件<stddef.h>中。一些也定义在其他头文件中,在它们各自的子条款中说明。
类型是
ptrdiff_t
它是两个指针相减
的结果的有符号整数类型;
sizet_t
它是sizeof操作符
的结果的无符号整型;和
wchar_t
它是一种整型,其值的范围可以表示所支持的地区中指定的最大扩展字符集
的所有成员的不同编码;空字符的编码值应为零,基本字符集的每个成员的编码值应为其作为整型字符常量中的唯一字符时的值。
【译者注】C99标准并未明确要求 size_t 类型可表示的范围大小必须和内存空间一样大,但 size_t 是在内存分配函数中指定期望分配内存大小的类型,如 void *malloc(size_t size) ,也即是说 size_t 类型大小决定了我们通过内存分配函数所能分配到的内存大小。所以一般来说,实现的 size_t 类型大小不会小于实际内存的最大值。
宏是
NULL
它展开为实现定义的空指针常量
;和
offsetof( type, member-designator )
它展开为一个类型为size_t的整型常量表达式
,其值是结构体成员(由 member-designator 指定)从结构体的开始(由 type 指定)到结构体成员的偏移量
(以字节为单位)。类型(type)和成员标识(member designator)应这样给出
static type t;
那么表达式 &(t.member-designator) 计算为一个地址常量。(如果指定的成员是位字段,则该行为未定义。)
【译者注】C99标准并未指定 NULL 的值,NULL 的具体值取决于实现,多数实现可能会将 NULL 的值定义为零。但是,为了提高代码的可移植性,我们不应该将 NULL 的值认为就是零。