程序 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