gcc: Offsetof

1 
1 6.51 Support for 'offsetof'
1 ===========================
1 
1 GCC implements for both C and C++ a syntactic extension to implement the
1 'offsetof' macro.
1 
1      primary:
1              "__builtin_offsetof" "(" typename "," offsetof_member_designator ")"
1 
1      offsetof_member_designator:
1                identifier
1              | offsetof_member_designator "." identifier
1              | offsetof_member_designator "[" expr "]"
1 
1  This extension is sufficient such that
1 
1      #define offsetof(TYPE, MEMBER)  __builtin_offsetof (TYPE, MEMBER)
1 
1 is a suitable definition of the 'offsetof' macro.  In C++, TYPE may be
1 dependent.  In either case, MEMBER may consist of a single identifier,
1 or a sequence of member accesses and array references.
1