我读到 struct 中位字段的顺序是特定于平台的.如果我使用不同的特定于编译器的打包选项,是否可以保证数据在写入时按正确的顺序存储?例如:
struct Message
{
unsigned int version : 3;
unsigned int type : 1;
unsigned int id : 5;
unsigned int data : 6;
} __attribute__ ((__packed__));
在装有GCC编译器的英特尔处理器上,字段按显示的方式布局在内存中.Message.version
是缓冲区中的前3位,Message.type
紧随其后.如果我为各种编译器找到等价的 struct 打包选项,这会是跨平台的吗?