【发布时间】:2021-11-04 23:18:41
【问题描述】:
我尝试在 C 中编写类似“memcpy”的函数来将数据块从源地址复制到目标地址。
在*dst_addr++ = *src_addr++;行出现错误:"invalid use of void expression"
我写的函数:
void MemCpy(void *src_addr, void *dst_addr, int length)
{
while(length--)
{
// copy by single byte
*dst_addr++ = *src_addr++;
}
return dst_addr;
}
如果以后需要,我使用void 指向任何对象类型。
为什么我用错了“void”?有人可以解释我的错误吗?
【问题讨论】:
-
类型
void没有大小。如果要访问内存,则必须转换为其他指针类型,例如char*。 GCC 包含一个扩展,它允许使用void*进行指针运算,但取消引用也不适用于 GCC。 -
注意:为什么
return dst_addr用于void函数?
标签: c void memcpy void-pointers