我有以下的代码,但MPLABX XC8编译器提示出错:
error: expression is not assignable
U1ERRIRbits.RXFOIF ? uart1.oerr = 1 : uart1.oerr = 0; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
这是相关的代码部分:
typedef union {
struct {
bool ferr : 1; // FERIF Framing Error
bool aerr : 1; // ABDOVF Error
bool oerr : 1; // RXFOIF Error
bool ready : 1; // Data Ready to be read
uint8_t reserved : 4;
};
uint8_t status;
}uart1_status_t;
static volatile uart1_status_t uart1;
当我使用相同的东西时,不会出现错误。if (U1ERRIRbits.RXFOIF)
uart1.oerr = 1;
else
uart1.oerr = 0;
不明白为什么?
uart1.oerr = U1ERRIRbits.RXFOIF? 1:0;
替代? - BlazeU1ERRIRbits.RXFOIF ? uart1.oerr = 1 : (uart1.oerr = 0)
代替。条件绑定比赋值更强。C运算符优先级。 - Scheff's Cat?:
直到它真正需要。这并不经常发生。 - Lundin