#define OFFSETOF(type, field) ((size_t)&(((type *)0)->field)) spa
(type *)0:把0地址当成type类型的指针。 指针
((type *)0)->field:对应域的变量。 变量
&((type *)0)->field:取该变量的地址,其实就等于该域相对于0地址的偏移量。 数据
(size_t)&(((type *)0)->field):将该地址(偏移量)转化为size_t型数据。