我很困惑为什么我的编译器在以下情况下抛出错误:
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
}
}
Run Code Online (Sandbox Code Playgroud)
但是如果我在传递给otherFunc之前进行转换,那很好,因为增加非void指针没有问题:
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++);
}
}
Run Code Online (Sandbox Code Playgroud)
一旦施放,无法将void指针递增?我错过了一些基本的东西吗?