
Find an Offset into a Structure
Here’s the code: #define offset(a,b) ((int) (&( ((a*)(0)) -> b))) Step by step, here’s what it does: Type-cast 0, or NULL, into a pointer of type a. So a must be a typename. Member-select b from that pointer. So a must be a structure typename, and b some member property.