我很困惑,爲什麼我的編譯器在以下條件拋出一個錯誤:Ç - 表達式必須爲可修改的左值
void funcExample (void * p_Buf, uint16_t len)
{
uint16_t i;
for (i = 0; i < len; i++) {
otherFunc (((uint8_t *)p_Buf)++); //error = expression must be a modifiable lvalue
}
}
,但傳遞給otherFunc之前,如果我投,因爲沒有任何問題遞增的罰款一個非空指針:
void funcExample (void * p_Buf, uint16_t len)
{
uint16_t i;
uint8_t * p_Buf_8bit;
p_Buf_8bit = (uint8_t *) p_Buf;
for (i = 0; i < len; i++) {
otherFunc (p_Buf_8bit++);
}
}
不能在虛擬指針增加一次投射?我在這裏錯過了什麼?
不一樣,但*非常* [**類似的問題在這裏**](http://stackoverflow.com/questions/24002044 /爲什麼燦I-不-DO-算術上-A-鑄造的-A-空指針)。 – WhozCraig 2014-10-20 17:08:36