#include// 导入头文件
#define offsetof(type, member) // 里面自带宏定义offsetof
// type填写结构体类型,member填写成员名称,返回内存偏移量,类型为size_t
// 举例如下
typedef struct { int a, b, c; } struct_t;
// 假设在32位机,结构间无空隙
offsetof(struct_t, a) // 值为 0,相对于整个结构体,无内存偏移量
offsetof(struct_t, b) // 值为 4,相对于整个结构体,4字节内存偏移量
offsetof(struct_t, c) // 值为 8,相对于整个结构体,8字节内存偏移量
// 示例offsetof底层实现原理(不一定通用)
#define offsetof(t, m) (size_t)(&(((t *)0)->m))