2013-09-10 67 views
4

我有一個代碼錯誤,但不知道我的鑄造和參考有什麼問題。C錯誤:左值需要作爲一元'&'操作數

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 

希望有人能夠幫助。謝謝!

回答

10

投射操作導致轉換,產生右值。一個右值沒有地址,所以你不能用一個一元&對它進行操作。你需要採取的地址,然後投

CDC_Send_DATA((unsigned char *)&ucByte, 1); 

不過是最正確的,你應該匹配在投參數類型:

CDC_Send_DATA((uint8_t *)&ucByte, 1); 

檢查返回值可能會也是一個好主意。

相關問題