how to get struct's start address from its member's address

c, memory-address, struct

Solution

You can do this using `offsetof`:

#define start_add(ptr1, type1, member1) ((type1 *)((char *)(ptr1) - offsetof(type1, member1)))

Problem

In C language, how to get struct's start address from its member's address? ``` struct type1 { //... int member1; //... }; struct type1 obj1; ``` And `ptr1` is the address of member `member1` in `obj1`, how to define macro `#define start_add(ptr1, type1, member1)` to get obj1's start address?

Original source