C / C ++: ordem e alinhamento de campo de bits de força
Eu li que a ordem dos campos de bits dentro de uma estrutura é específica da plataforma. E se eu usar diferentes opções de empacotamento específicas do compilador, esses dados de garantia serão armazenados na ordem correta à medida que forem escritos? Por exemplo:
struct Message
{
unsigned int version : 3;
unsigned int type : 1;
unsigned int id : 5;
unsigned int data : 6;
} __attribute__ ((__packed__));
Em um processador Intel com o compilador GCC, os campos foram dispostos na memória conforme são mostrados.Message.version
foi os primeiros 3 bits no buffer, eMessage.type
seguido. Se eu encontrar opções equivalentes de empacotamento de estruturas para vários compiladores, isso será multi-plataforma?