我读到一个结构中位字段的顺序是特定于平台的。如果我使用不同的特定于编译器的打包选项,那么这些保证数据在写入时是否会以正确的顺序存储?例如:
struct Message
{
unsigned int version : 3;
unsigned int type : 1;
unsigned int id : 5;
unsigned int data : 6;
} __attribute__ ((__packed__));
在具有 GCC 编译器的 Intel 处理器上,字段如图所示在内存中进行了布局。Message.version
是缓冲区中的前3位,Message.type
紧随其后。如果我为不同的编译器找到等效的结构打包选项,这是跨平台的吗?