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
последовало. Если я найду эквивалентные варианты упаковки структуры для различных компиляторов, будет ли это кросс-платформенным?