Messages in this thread | | | Date | Wed, 31 Aug 2011 09:14:59 +1000 | From | Ryan Mallon <> | Subject | Re: Question with "container_of(ptr, type, member)" |
| |
On 30/08/11 20:44, peter wrote: > I have a question about the macro " container_of(ptr, type, member) " > I can write it as this, > #define container_of(ptr, type, member) ({ \ > (type *) ((char *) ptr - offset_of(type, member)); \ > }) > It can act the same as > #define container_of(ptr, type, member) ({ \ > const typeof( ((type *)0)->member ) *__mptr = (ptr); \ > (type *)( (char *)__mptr - offsetof(type,member) );}) > So why we don't use the first one ? > Thanks for your answer. > (I am a kernel newbie ,and sorry for my poor english~)
The version used by the Linux kernel does type checking.
~Ryan
| |