宏定义:获得一个field在结构体(struct type)中的偏移量

#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型数据。

相关文章
相关标签/搜索