title: Member offset macro - need details
body: <p>Please take a look at this macro. It is used in Symbian OS SDK, which compiler is based on GCC (&lt; 4 version of it).</p>
  
  <pre><code>#ifndef _FOFF
  #if __GNUC__ &lt; 4
  #define _FOFF(c,f)          (((TInt)&amp;(((c *)0x1000)-&gt;f))-0x1000)
  #else
  #define _FOFF(c,f)          __builtin_offsetof(c,f)
  #endif
  #endif
  </code></pre>
  
  <p>I understand that it is calculating offset to specific class/struct member. But I cannot understand how that weird statement works - what is the constant 0x1000 and why is it there? Could somebody please explain this to me?</p>