manpagez: man pages & more
info gcc
Home | html | info | man
[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.43 Offsetof

GCC implements for both C and C++ a syntactic extension to implement the offsetof macro.

 
primary:
	"__builtin_offsetof" "(" typename "," offsetof_member_designator ")"

offsetof_member_designator:
	  identifier
	| offsetof_member_designator "." identifier
	| offsetof_member_designator "[" expr "]"

This extension is sufficient such that

 
#define offsetof(type, member)  __builtin_offsetof (type, member)

is a suitable definition of the offsetof macro. In C++, type may be dependent. In either case, member may consist of a single identifier, or a sequence of member accesses and array references.