【发布时间】:2016-09-24 10:36:01
【问题描述】:
我正在使用 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 编译得很好。如何解决这个错误?
【问题讨论】:
-
但是你确定你是用C编译器编译的吗?
-
是的,已删除。
-
但是您不能索引 void 类型的指针。您可以尝试将其转换为 char 以便每个增量为一个字节
-
因为编译器不知道
void*指针的大小,尽管可能存在允许它的GCC 扩展。要进行指针运算,您必须知道它指向的数据的大小。请注意,将1添加到指向 32 位int的指针会将4添加到指针本身。就像数组索引一样,您可以使用arr[1]而不是arr[4]访问第二个元素。 -
感谢大家的有趣评论。
标签: c visual-studio void void-pointers