结构体元素偏移量宏的定义及解析

如何通过编码实现结构体元素的地址偏移量:

通过网上搜索到一个通过宏定义的方法实现,大致内容如下:

#define offset(struct_name, struct_member) (unsigned int)(&(((struct_name *)0)->struct_member))

通过实验验证,该宏能够正确实现结构体元素的偏移量的计算;

结构体元素的偏移量是针对首地址的,因此,第一步就是确定当前结构体的地址

(struct_name *)0是常数0强制转换为struct_name类型的指针的类型转换符,这样该指针就指向了结构体的首地址,
然后通过该指针指向不同的成员,并取得不同成员的地址进行显示转换,最终得到各个成员的地址偏移量。

原文地址:https://www.cnblogs.com/sggggr/p/15028904.html