我很困惑,为什么我的编译器在以下条件抛出一个错误:Ç - 表达式必须为可修改的左值
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