title: Does this implementation of offsetof invoke undefined behavior?
body: <p><code>offsetof</code> is defined like this in <code>stddef.h</code>:</p>
  
  <pre><code>#define offsetof(type, member) ((size_t)&amp;((type *)0)-&gt;member)
  </code></pre>
  
  <p>Does this invoke undefined behavior due to the dereference of a NULL pointer? If not, why?</p>