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