Итак, я уже говорил, что использовать союзы таким образом - плохая идея.Я знаю, что это технически неопределенное поведение.Однако, если я использую C ++ 11 (и для этого только компиляторы новой версии), то честно насколько плохим может быть следующий код?Это действительно может взорвать меня?Можно ли его улучшить?
union registers_t
{
struct [[packed]]
{
#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
uint8_t F, A, C, B, E, D, L, H, R, I;
#else
uint8_t A, F, B, C, D, E, H, L, I, R;
#endif
uint16_t SP, PC;
};
struct [[packed]]
{
uint16_t AF, BC, DE, HL;
};
};
Как я уже сказал, я знаю, что это UB в C ++, поэтому нет причин указывать на это.Мой вопрос имеет ли это значение в этом случае?