- The byte order / endianness
- The alignment of variables
- The exact width of variables (32-bits, 64-bits)
"struct" is great for what it was designed for, storing your internal data structures in a way efficient for the machine.
But everyone abuses structs and tries to read external data sources e.g. files using them. They might hack it to work on their own machine, then as soon as a machine of the other endianness comes along, hacks and #ifdefs appear, then machines with ints of different widths come along....
Of course these people are using structs "wrong", like the author of the article suggests. But nevertheless, the fact that people are using structs "wrong" suggests there is a need for something that provides what people are trying to use structs for.