/*
(s *)0
0 强制转换成s类型指针,指针指向0地址
((s *)0)->m
s的成员变量m,无法取值,可以取地址
&(((s *)0)->m)
取成员变量m的地址,首地址是0,成员变量m的地址就是该结构体的偏移
(size_t)
将地址转换成size_t类型
*/
#define offsetof(s,m) (size_t)&(((s *)0)->m)
typedef struct {
int a;
char b;
}StTemp;
int main()
{
StTemp temp, *p;
p = (StTemp *)0;
printf("%x\n", p);
printf("%x\n", &p->a);
printf("%x\n", &p->b);
printf("%x\n", offsetof(StTemp,a));
printf("%x\n", offsetof(StTemp,b));
}
csdn文章推荐受影响解决办法10个字10行
csdn文章推荐受影响解决办法10个字10行
csdn文章推荐受影响解决办法10个字10行
csdn文章推荐受影响解决办法10个字10行
csdn文章推荐受影响解决办法10个字10行
csdn文章推荐受影响解决办法10个字10行
csdn文章推荐受影响解决办法10个字10行
csdn文章推荐受影响解决办法10个字10行
csdn文章推荐受影响解决办法10个字10行
csdn文章推荐受影响解决办法10个字10行
csdn文章推荐受影响解决办法10个字10行
csdn文章推荐受影响解决办法10个字10行
csdn文章推荐受影响解决办法10个字10行