小编jay*_*pee的帖子

C - 表达式必须是可修改的左值

我很困惑为什么我的编译器在以下情况下抛出错误:

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指针递增?我错过了一些基本的东西吗?

c pointers void-pointers

6
推荐指数
1
解决办法
3310
查看次数

标签 统计

c ×1

pointers ×1

void-pointers ×1