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: 306

Filed under:
|
|

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

Related posts about c

    Related posts about pointer-arithmetic