On Sat, Jan 24, 2015 at 10:52 AM, Olaf van der Spek
On Sat, Jan 24, 2015 at 3:54 PM, Beman Dawes
wrote: struct { big_int32_buf_t code; big_uint32_buf_t length; little_int16_buf_t version; big_int32_buf_ut shape_type; } data;
You're mixing aligned and unaligned types. Shouldn't all be unaligned?
In theory, yes. If data_t ever got embedded into a larger structure at an unaligned location, that would matter. Unaligned types would also protect against architectures that required super-alignment or don't support 16/32/64 bit integer types, but I'm not sure such architectures actually exist anymore. In practice, the enhanced efficiency of aligned types is usually more important than worry about someday encountering an odd-ball architecture or use in an unaligned location. But it is an engineering tradeoff, so you can make the choice whichever way seems appropriate to your application. --Beman