69,373
社区成员
发帖
与我相关
我的任务
分享
struct fw_data
{
u32 offset : 8;
u32 : 0;
u32 val;
};
struct fw_data
{
short offset:8;
};
占两个字节
struct fw_data
{
short offset:8;
int:0;
};
变成占4个字节
struct fw_data
{
short offset;
int:0;
};
还是两个字节
综上,int:0的作用是在当前一个结构体成员只使用几位的时候,int:0会将这个成员所占空间填为int所占的4个字节,然后
下一个成员在4个字节后开始计算
struct fw_data
{
u32 offset : 8;
u32 : 0;
u32 val;
};
占8个字节
struct fw_data
{
int offset : 8;
int c:8;
int : 0;
int val;
};
还是占8个字节
struct fw_data
{
int offset : 8;
int : 0;
int c:8;
int val;
};
占了12个字节
综上, int:0将前一个int的剩余位数占用
U32的话还可以在当前文件自己再定义一个U32,编译冲突时会告诉原来你在哪定义的