Я конвертирую приложение vxWorks в Linux.
Раньше у меня был union
с word
и struct
, так что когда я обращался к элементам struct
, я мог использовать макет word's
для создания своих struct
элементов.
Однако я не помню, как я это понял, и это работает на коробке vxWorks. В моем экземпляре vxWorks макет выглядит следующим образом:
typedef union Status
{
struct fields
{
uint32_t byteA : 1; // <31>
uint32_t blank : 23; // <30:8>
uint32_t bytesN : 8; // <7:0>
} fields;
uint32_t word;
}
Я уже столкнулся с некоторыми проблемами с порядком байтов при переносе с vxWorks на Linux. Поэтому важно выяснить расположение uint32_t
в Linux.
uint32_t foobar = 0x00ff00ff; if (((char *) foobar)[0] == 0xff) /* one endianess */ else /* the other */
- person Alexander Oh   schedule 28.10.2011