在C语言中,如何从其成员的地址获取struct的起始地址?
struct type1 { //... int member1; //... }; struct type1 obj1;
并且ptr1
是成员的地址member1
中obj1
,如何定义
宏#define start_add(ptr1, type1, member1)
获得OBJ1的
起始地址?
你可以这样做offsetof
:
#define start_add(ptr1, type1, member1) ((type1 *)((char *)(ptr1) - offsetof(type1, member1)))