Why subtract null pointer in offsetof()?
Posted
by Bruce Christensen
on Stack Overflow
See other posts from Stack Overflow
or by Bruce Christensen
Published on 2010-04-02T19:18:39Z
Indexed on
2010/04/02
19:23 UTC
Read the original article
Hit count: 331
Linux's stddef.h defines offsetof()
as:
#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
whereas the Wikipedia article on offsetof()
(http://en.wikipedia.org/wiki/Offsetof) defines it as:
#define offsetof(st, m) \
((size_t) ( (char *)&((st *)(0))->m - (char *)0 ))
Why subtract (char *)0
in the Wikipedia version? Is there any case where that would actually make a difference?
© Stack Overflow or respective owner