Макрос container_of()
в ядре Linux определяется как:
#define container_of(ptr, type, member) ({ \
const typeof( ((type*)0)->member) * __mptr =(ptr);\
(type*)( (char*)__mptr - offsetof(type,member) );})
Почему это использует ((type*)0)->member
, а не (type*)->member
?