错误 C2036:'void *':未知大小

error C2036: 'void *' : unknown size

我正在使用 visual studio 处理一个 C 项目。我尝试编译以下代码:

void shuffle(void *arr, size_t n, size_t size)
{
        ....
        memcpy(arr+(i*size), swp,  size);
        ....  
}

Visual studio 编译器出现以下错误:

error C2036: 'void *' : unknown size

代码在 GCC 下编译良好。如何解决这个错误?

您不能对 void * 执行指针运算,因为 void 没有定义的大小。

将指针指向 char *,它将按预期工作。

memcpy((char *)arr+(i*size), swp,  size);