我尝试将库从linux移植到win32,有一个结构定义为:
struct X {
unsigned int type : 4;
unsigned int tag : 4;
}__attribute__((packed));
Run Code Online (Sandbox Code Playgroud)
大小应为1,我将其更改为:
#pragma pack(push, 1)
struct X {
unsigned int type : 4;
unsigned int tag : 4;
};
#pragma pack(pop)
Run Code Online (Sandbox Code Playgroud)
但是sizeof(X)仍然是4,编码会混乱,如何将大小更改为1?
使用unsigned char代替unsigned int:
struct X {
unsigned char type : 4;
unsigned char tag : 4;
};
static_assert(sizeof(X)==1);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
58 次 |
| 最近记录: |