Thread (8 messages) 8 messages, 5 authors, 2012-03-13

Macro explanation

flat view

From: gregkh@linuxfoundation.org (Greg KH)
Date: 2012-03-09 18:34:08

On Fri, Mar 09, 2012 at 11:51:54PM +0530, Vijay Chauhan wrote:
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.
Did you see this:
	http://www.kroah.com/log/linux/container_of.html

after reading that, if you have further questions, please let us know.

greg k-h
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help