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

Pro*_*s08 4 c void void-pointers visual-studio

我正在使用visual studio进行C项目.我试着编译以下代码:

void shuffle(void *arr, size_t n, size_t size)
{
        ....
        memcpy(arr+(i*size), swp,  size);
        ....  
}
Run Code Online (Sandbox Code Playgroud)

我在Visual Studio Compiler中遇到以下错误:

error C2036: 'void *' : unknown size
Run Code Online (Sandbox Code Playgroud)

该代码与GCC编译良好.如何解决这个错误?

dbu*_*ush 8

您无法对a执行指针运算,void *因为void它没有定义的大小.

将指针强制转换char *,它将按预期工作.

memcpy((char *)arr+(i*size), swp,  size);
Run Code Online (Sandbox Code Playgroud)