#define OFFSET (type, field) ( (size_t) &( ((type*)0)->field ) )
ANSI C 允许任何值为0的常量被强制转换为任何一种类型的指针,但是转换结果是NULL指针
&( ((type*)0)->field )意图为计算当前结构体实例的收地址为0时field字段的地址
而我们聪明的编译器则根据type的内存布局和结构体首地址实例计算出常量(地址)
原文:https://www.cnblogs.com/zhilong233/p/12979695.html