宏定义为什么定义一个数据还有偏移
宏定义为什么定义一个数据还有偏移
日期: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型数据。
(type *)0:把0地址当成type类型的指针。
((type *)0)->field:对应域的变量。
&((type *)0)->field:取该变量的地址,其实就等于该域相对于0地址的偏移量。
(size_t)&(((type *)0)->field):将该地址(偏移量)转化为size_t型数据。