我有一个代码错误,但不确定我的转换和引用出了什么问题。
BOOL xMBPortSerialPutByte( CHAR ucByte )
{
CDC_Send_DATA(&((unsigned char)ucByte), 1); // code error here
xMBPortEventPost(EV_FRAME_SENT);
return TRUE;
}
CDC_Send_DATA定义如下:
uint32_t CDC_Send_DATA (uint8_t *ptrBuffer, uint8_t Send_length);
这是错误消息:
port/portserial.c:139:19: error: lvalue required as unary '&' operand
希望有人能帮忙。谢谢!
最佳答案
强制转换操作导致转换,并产生一个右值。右值没有地址,因此您不能使用一元&
对其进行操作。您需要获取地址,然后强制转换为:
CDC_Send_DATA((unsigned char *)&ucByte, 1);
但是最正确的是,您可能应该在类型转换中匹配参数类型:
CDC_Send_DATA((uint8_t *)&ucByte, 1);
检查返回值可能也是一个好主意。