> If it did, you couldn't link C libraries compiled with one compiler with programs compiled on another.
You cannot do this unless the compilers have the same ABI, which is not part of the standard.
It depends upon the architecture and compiler. One C compiler for the MC68000 might have int as 16 bits (since externally, the MC68000 had a 16-bit external bus) but another one have ints as 32 bits (since the MC68000 can handle 32-bits internally). This was more of an issue during the 80s and 90s when you had more commercial C compiler available than today.
You can't be sure you can send such structures to different OSes or CPUs however.