9.20 位域
位域的应用
信息的压缩存储、节省存储单元
读写方式方便、可读性强
操作系统内核、驱动源码:tcphdr
注意事项
位域不能跨越字节存储
长度不允许超过一个字节
允许匿名函数
代码
#include<stdio.h>
#include<string.h>
struct register_usb{
unsigned short en:1;
unsigned short ep:4; //ep占4个位
unsigned short mode:3;
};
struct register_usb2{
unsigned short en:1;
unsigned short ep:4;
unsigned short :3;
unsigned short mode:6;
};
union spsr{
unsigned short mode:3;
unsigned short ep:4;
unsigned short en:1;
};
int main(void)
{
struct register_usb reg;
memset(®,0,sizeof(reg));
reg.en = 1;
reg.ep = 4;
reg.mode = 3;
printf("reg:%x\n",reg);
printf("reg.en:%X\n",reg.en);
printf("reg.ep:%X\n",reg.ep);
printf("reg.mode:%X\n",reg.mode);
union spsr reg2;
memset(®2,0,sizeof(reg2));
reg2.mode = 3;
printf("reg2:%x\n",reg2);
return 0;
}