Macro explanation
Vijay Chauhan
kernel.vijay at gmail.com
Fri Mar 9 13:21:54 EST 2012
Hi,
I'm checking the container_of and offsetof macro
#define container_of(ptr, type, member) ({ \
const typeof( ((type *)0)->member ) *__mptr = (ptr);
(type *)( (char *)__mptr - offsetof(type,member) );})
#define offsetof(TYPE, MEMBER) \
((size_t) &((TYPE *)0)->MEMBER)
I did not understand the first line of both macro. Will it not create
the NULL pointer dereference problem? I know it works and read some
article but it did not explain this part, so can anyone explain why
the NULL pointer error is not coming. Am I missing something?
Any C language specification of such example.
More information about the Kernelnewbies
mailing list