程序 14-8 linux/include/stddef.h
1 #ifndef _STDDEF_H
2 #define _STDDEF_H
3
4 #ifndef _PTRDIFF_T
5 #define _PTRDIFF_T
6 typedef long ptrdiff_t; // 两个指针相减结果的类型。
7 #endif
8
9 #ifndef _SIZE_T
10 #define _SIZE_T
11 typedef unsigned long size_t; // sizeof返回的类型。
12 #endif
13
14 #undef NULL
15 #define NULL ((void *)0) // 空指针。
16
// 下面定义了一个计算某成员在类型中偏移位置的宏。使用该宏可以确定一个成员(字段)在
// 包含它的结构类型中从结构开始处算起的字节偏移量。宏的结果是类型为 size_t 的整数常
// 数表达式。这里是一个技巧用法。((TYPE *)0)是将一个整数0类型投射(type cast)成数
// 据对象指针类型,然后在该结果上进行运算。
17 #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
18
19 #endif
20