在C89中,函数块中的变量必须放在所有语句前面声明。
在C99,函数块中的变量不必放在所有语句前面声明。
微软一直沿用C89,所以在VC++6.0,VS2008中,变量必须放在函数开头,以下代码就编译不过,但gcc可以。
void *mymemcpy(void* dst, const void* src, int size)
{
/*检查参数的是否合理*/
if(size<0)
{
printf("invalid count number!\n");
return (void*)0;
}
if(src == NULL || dst == NULL)
{
printf("source or destination addr is NULL!\n");
return (void*)0;
}
if(src == dst)
{
printf("source addr equal destination addr!\n");
return (void*)0;
}
/*内存内容copy*/
char* pdst = (char*)dst;
const char *psrc = (const char*)src;
while(size--)
*pdst++ = *psrc++;
return dst;
}