На языке C, как получить начальный адрес структуры от адреса его участника?
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)))