如何通过一个结构体成员变量的地址找到该结构体的首地址?[备忘]

Linux内核代码里的一个宏(Linux内核里很多结构体之间是通过某一成员变量相互寻址的),感觉挺巧妙。大概意思是:

#define get_addr(type, member, mem_addr)    (type*)(mem_addr - &(((type*)0)->member)) 

typedef struct{

int a;

int b;

int c;

}test_t test;

addr = get_addr(test_t, c, &test.c);

这样可以绕过字节对齐问题。

posted on 2011-10-28 16:40  Cheney Shen  阅读(554)  评论(0编辑  收藏  举报

导航