#define my_offerset(type , exp) ((int)&(((type*)0)->exp))
//因为是求结构体的成员内存偏移。结构体会定义一种新的数据类型 所以type就是结构体
//exp就是结构体的成员
//((type*)0)把“0”强制转化为指针类型,则该指针一定指向“0”
//然后该指针又指向该结构体某一成员地址,再由前面强转为int
//则该宏就可以计算出结构体成员的偏移
一段例子 方便理解:
#include <stdio.h>
struct A
{
char a;
int b;
double c;
long d;
};
int main()
{
int offer;
offer = my_offerset(struct A , c); //c呢就是结构体中那个double c
printf("偏移量是%d",offer); //c也是结构体中的一个成员
return 0;
}