1、使用结构体定义了位域时,习惯性的将整个结构体进行了位与操作。
结构体不能直接进行位操作,具体什么原因网上查一下,我还不知道。但是今天定义了一个位域类型结构体,用来存储几个按键标志,本来想着方便进行操作,就直接进行了位与,想着同时对多个参数进行转换,结果编译器报错“表达式必须具有整型”。
所以还是老老实实一个一个位转换吧……
typedef struct {
uint8_t Bit0:1;
uint8_t Flag0:1; // 按键处理标志
uint8_t Bit1:1;
uint8_t Flag1:1; // 按键处理标志
uint8_t reserve:4; // 保留位
}Key;
int main(void)
{
Key A ={0};
Key B ={1, 0, 0, 1, 3};
A &=B;
...
}
**另外,结构体初变量始化赋值时候和数组类似,每个成员变量进行对应方式的赋值,整个结构体赋值需要用大括号{}括起来,和数组赋值类似,而不是直接赋值一个“0”哦。