如何通过一个结构体成员变量的地址找到该结构体的首地址?[备忘]
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) 编辑 收藏 举报