C / C ++: Forzar orden de campo de bit y alineación

Leí que el orden de los campos de bits dentro de una estructura es específico de la plataforma. ¿Qué sucede si utilizo diferentes opciones de empaquetado específicas del compilador? ¿Se guardarán los datos de esta garantía en el orden correcto a medida que se escriben? Por ejemplo:

struct Message
{
  unsigned int version : 3;
  unsigned int type : 1;
  unsigned int id : 5;
  unsigned int data : 6;
} __attribute__ ((__packed__));

En un procesador Intel con el compilador GCC, los campos se distribuyeron en la memoria tal como se muestran.Message.version fueron los primeros 3 bits en el búfer, yMessage.type seguido. Si encuentro opciones de empaquetado de estructuras equivalentes para varios compiladores, ¿esto será multiplataforma?

Respuestas a la pregunta(6)

Su respuesta a la pregunta