#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void use_mem()
{
int a[7] = { 1,2,3,4,5,6,7 };
memcpy(a + 2, a, sizeof(int) * 5);
mymemmove(a + 2, a, sizeof(int) * 5);//现在二者都可以处理内存重叠的情况
}
//实现memmove
void mymemmove(void* to, void* from,int count)
{
char* From, * To;
if (from > to)//地址大小可以直接比较
{
From = (char*)from;
To = (char*)to;
while (count)
{
*To = *From;
To++;
From++;
count--;
}
}
else if(from<to)
{
From = (char)from+count-1;
To = (char)to+count-1;
while (count)
{
*To = *From;
*To--;
*From--;
count--;
}
}
}
运行后提示重定义:不同的基类型
为什么会这样?怎样改正?麻烦具体一点,谢谢