Der Kompiler könnte
struct x{
uint32_t a;
uint16_t b;
uint8_t c;
};
struct y{
uint32_t d;
x e;
uint16_t f;
};
in
struct y{
uint32_t d;
uint32_t e.a;
uint16_t e.b;
uint8_t e.c;
uint16_t f;
};
umformen und dann alles nach Größe ordnen, sodass
struct y{
uint32_t d;
uint32_t e.a;
uint16_t e.b;
uint16_t f;
uint8_t e.c;
};
rauskommt. Da kann er sich, glaube ich, immer über die Entscheidung des Programmierers hinwegsetzen, denn der hat ja wahrscheinlich nichts gegen Optimierung. Schießlich optimieren Kompiler ja auchden Assembler-Code. Wenn das mal nicht der Fall sein sollte, könnte man sich doch ein schlaues Keyword wie "keep" oder so ausdenken und das setzt man einfach irgendwo in die Deklaration ein.