Hi why container_of macro looks like this:
#define container_of(ptr, type, member) ({ \
const typeof( ((type *)0)->member ) *__mptr = (ptr); \
(type *)( (char *)__mptr - offsetof(type,member) );})
Is there any risk to use it just as posted below:
#define new_container_of(ptr, type, member) ({ \
(type *)( (char *)ptr - offsetof(type,member) );})
Since we are casting at the end ptr to char*, why we are doing first macro line at all?