我读到,结构中位字段的顺序是特定于平台的。如果我使用不同的特定于编译器的打包选项,那该如何保证数据在写入时以正确的顺序存储?例如:
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
是。如果我为各种编译器找到了等效的struct包装选项,这是否可以跨平台使用?