宏定义为什么定义一个数据还有偏移

日期:2021-12-28 02:32:53 人气:1

宏定义为什么定义一个数据还有偏移

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