C / C ++: порядок и выравнивание поля битов силы

Я прочитал, что порядок битовых полей в структуре зависит от платформы. Как насчет того, если я использую различные опции упаковки для конкретного компилятора, будут ли эти гарантийные данные храниться в правильном порядке по мере их записи? Например:

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

На процессоре Intel с компилятором GCC поля были размещены в памяти, как они показаны.Message.version были первые 3 бита в буфере, иMessage.type последовало. Если я найду эквивалентные варианты упаковки структуры для различных компиляторов, будет ли это кросс-платформенным?

Ответы на вопрос(6)

Ваш ответ на вопрос