1、结构体中使用冒号(:)表示位域,表示占用一个字节的多少位,是对位的操作;
2、因为是对一个字节中位的操作,所以位定义类型都是一个类型;
3、8位示例://因为是8位,所以用的是uint8_t,8位刚好全用完了。
typedef struct {
uint8_t a : 1;
uint8_t b: 1;
uint8_t c: 1;
uint8_t d: 1;
uint8_t e: 1;
uint8_t f: 1;
uint8_t g: 1;
uint8_t h: 1;
}mybits;
32位示例://因为是32位的,所以用的是uint32_t,位可以没有用完;
typedef struct {
uint32_t a : 1;
uint32_t b: 1;
uint32_t c: 1;
uint32_t d: 1;
uint32_t e: 1;
uint32_t f: 1;
uint32_t g: 1;
uint32_t h: 1;
}mybits;
详细可参考一下链接说明: