初始化时将整数赋给指针,未作类型转换

场景:警告:初始化时将整数赋给指针未作类型转换 异常:与 'fun’ 类型冲突 异常:‘fun’ 的下一个隐式声明在此

警告:初始化时将整数赋给指针,未作类型转换 错误:与 'fun’ 类型冲突 错误:‘fun’ 的上一个隐式声明在此
C/C++ code

#include <string.h>
#include <stdio.h>
#include <stdlib.h>


 int main()
{
int i=1;
char* p=(char*)fun(i);

return 0;
}

char* fun(int a)
{
  char *b=(char*)malloc(sizeof(char)*10);
  sprintf(b,"%d",a);
  return b;
}



[root@tian 桌面]# gcc -o send1 send1.c
send1.c:14:7: 错误:与‘fun’类型冲突
send1.c:9:16: 附注:‘fun’的上一个隐式声明在此

这是什么原因阿。怎么解决阿。谢谢阿

------解决方案--------------------
编译器不同,vs正常
------解决方案--------------------
C/C++ code

#include <string.h>
#include <stdio.h>
#include <stdlib.h>

char* fun(int a);  
int main()
{
    int i=1;
    char* p=(char*)fun(i);

    printf("%c\n",*p);
    return 0;
}

char* fun(int a)
{
    char *b=(char*)malloc(sizeof(char)*10);
    sprintf(b,"%d",a);
    return b;
}

------解决方案--------------------
C/C++ code
char* fun(int a); //前置声明下看看,还不行,就换个名字

int main()
{

------解决方案--------------------
没有问题,编译器的问题吧,vc正常啊
------解决方案--------------------
main函数在调用fun() 要先声明