繁体   English   中英

C错误:左值作为一元'&'操作数

[英]C error: lvalue required as unary '&' operand

我有代码错误但不确定我的转换和引用有什么问题。

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);

检查返回值也可能是一个好主意。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM