写一个宏,计算结构体中某变量相对于首地址的偏移,并给出说明
#define STRUCT_OFFSET(id, element) ((unsigned long)(&(( struct id*)0)->element))
因为是求偏移量 所以假设结构体的首地址是0开始,把他转换成结构体指针类型,在用 -> 取得他的成员,前面加了一个& 就是取得这个成员的地址,最后在强制转换成unsigned long, 这样就得到了偏移量。
写一个宏,计算结构体中某变量相对于首地址的偏移,并给出说明
#define STRUCT_OFFSET(id, element) ((unsigned long)(&(( struct id*)0)->element))
因为是求偏移量 所以假设结构体的首地址是0开始,把他转换成结构体指针类型,在用 -> 取得他的成员,前面加了一个& 就是取得这个成员的地址,最后在强制转换成unsigned long, 这样就得到了偏移量。