左值所需的左值
Posted
技术标签:
【中文标题】左值所需的左值【英文标题】:lvalue required as left 【发布时间】:2019-09-29 21:52:44 【问题描述】:编译这段代码时:
#define SET_BIT(reg,bitno) reg|=(1<<bitno)
#define CLR_BIT(reg,bitno) reg &=~(1<<bitno)
#define GET_BIT(reg,bitno) ((reg>>bitno)&1)
#define TOGGLE_BIT(reg,bitno) reg^=(1<<bitno)
switch (PIN_select)
case DIO_PIN_A:
if (level==LOW)
CLR_BIT(DIO_PIN_A,PIN_Bit);
else if(level==HIGH)
SET_BIT(DIO_PIN_A,PIN_Bit);
break;
我收到以下错误:
error: lvalue required as left operand of assignment fac(0)=1;
error: lvalue required as left operand of assignmen
error: lvalue required as left operand of assignment
#define CLR_BIT(REG,BIT) REG &=~(1<<BIT)
^
note: in expansion of macro ‘CLR_BIT’
CLR_BIT(DIO_PIN_A,PIN_Bit);
^
error: lvalue required as left operand of assignment
#define SET_BIT(REG,BIT) REG|=(1<<BIT)
^
【问题讨论】:
【参考方案1】:例如这一行
CLR_BIT(DIO_PIN_A,PIN_Bit);
扩展到:
DIO_PIN_A &= ~(1<<PIN_Bit);
但是,DIO_PIN_A
是一个整型常数(我们知道这一点是因为它用在了 case
中),所以你不能修改它。
【讨论】:
以上是关于左值所需的左值的主要内容,如果未能解决你的问题,请参考以下文章