C编程小问题 —— “error: #31: expression must have integral type“

    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”哦。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值