I think the answer should be that you most certainly don't want to do this.
You could try nneonneo's solution or add __attribute__((packed))
to your structs to make the structs the same size on both OS X and iOS but keep in mind this is a compiler specific feature and will make your code less portable
Furthermore, if you did change the padding, your program would likely crash or run less efficiently on either architectures (especially iOS/ARM) due to alignment requirements not being met. Some ARM architectures (unsure about iDevices) won't allow unaligned reads/writes and will outright crash if not run slower (since two memory reads are required instead of one).
A workaround might be to use the highest common alignment (appears to be 8), which would simply take a bit more space. But this is still hacky and non-portable.
Why are you trying to do this anyway?
Edit: nneonneo's answer probably should look like this:
typedef struct{
char t1 __attribute__ ((aligned (8)));
long long t2 __attribute__ ((aligned (8)));
char t3 __attribute__ ((aligned (8)));
} struct_size_test;