一、位域描述
存放一个开关量或者其他开关状态时,用一位二进位即可。为了减少嵌入式内存资源的开销,可以使用位域进行定义,位域是C语言支持的一种数据结构,称为“位域”或“位段”。“位域”是把一个字节中的每个位划分为几个不同的区域,并指明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。
二、定义
定义一个结构体源代码如下:
typedef struct
{
uint32_t ID;
struct sAttr
{
uint8_t SChl:4; //终端发送数据的频点,
uint8_t RMsg:4; //要读取的报文的序号,从0开始表示第一条报文
}Attr;用冒号:来指明占用的位数,本例中结构体Attr定义为位域结构体,总共占用1字节 SChl=4bit RMsg=4bit
}PollMeterInfoType;
PollMeterInfoType s_tMeterInfo;
三、调用
直接采用结构体调用方式即可,例如s_tMeterInfo.Attr.SChl。