__builtin_offsetof
typedef int first[-(int)__builtin_offsetof(struct foo, u.s.first)];
typedef int first_a[-(int)__builtin_offsetof(struct foo, u.s.first.a)];
typedef int first_b[-(int)__builtin_offsetof(struct foo, u.s.first.b)];
typedef int second[-(int)__builtin_offsetof(struct foo, u.s.second)];
typedef int array[-(int)__builtin_offsetof(struct foo, array)];
typedef int array_0_a[-(int)__builtin_offsetof(struct foo, array[0].a)];
typedef int array_0_b[-(int)__builtin_offsetof(struct foo, array[0].b)];
typedef int array_1_a[-(int)__builtin_offsetof(struct foo, array[1].a)];
typedef int array_50_a[-(int)__builtin_offsetof(struct foo, array[50].a)];
typedef int array_51_a[-(int)__builtin_offsetof(struct foo, array[51].a)];
-(int)__builtin_offsetof(struct mixed, ch)