struct S { char c; int i; void *p; }; struct S arr[2]; int size_S(void) { return (int)sizeof(struct S); } int off_i(void) { return (int)__builtin_offsetof(struct S, i); } int off_p(void) { return (int)__builtin_offsetof(struct S, p); } int stride(void) { return (int)((char *)&arr[1] - (char *)&arr[0]); }