C语言变量在函数开头定义还是在用到时定义

    在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;
}


 

展开阅读全文

没有更多推荐了,返回首页