麻烦高手来看看这是怎么回事,C语言的

2024-11-23 06:24:35
推荐回答(5个)
回答1:

你要把那个fun函数放到main函数前边。
出现警告提示是因为编译到main函数时发现fun函数还没有定义。于是提示说假设fun函数是返回int值的函数。
出现的错误提示是因为,前边已经假设fun函数是返回int的函数了(就是编译器假定fun函数为int fun()了),结果在后边再一次碰到了fun函数的定义,于是它就报告说fun函数重复定义了。
清楚了吧?请采纳。

回答2:

函数的先使用后定义问题。

C语言要求函数在使用前需要先定义,如果没有定义,编译器会帮助你生成一个默认的定义,因此会产生第一条告警。
warning C4013: 'fun' undefined; assuming extern returning int

int i,b[6];char a[100]="bacd1b+ddep";
fun(a,b);
C语言编译器在编译到下面这段代码的时候,发现了一个不认识的函数fun,就会根据你的参数生成一个默认的定义,默认定义的返回值是int类型,这就相当于
int i,b[6];char a[100]="bacd1b+ddep";
int fun(char a[], int b[]);
fun(a,b);

但是后续实现fun的时候,void fun(char a[],int b[]),返回值确实void类型,和上面的定义不匹配,因此就出现了第二个错误error C2371: 'fun' : redefinition; different basic types

修改的话,要么就在main函数之前显示声明fun的定义,或者fun的实现放在main函数之前。

回答3:

函数要么定义在前面 要么声明一下 不然不知道你调用的是哪个

声明方式如下

#include
#include
void fun(char a[],int b[]);
void main ()
{
 int i,b[6];char a[100]="bacd1b+ddep";
 fun(a,b);
 printf("The result is :");
 for (i=0;i<6;i++)printf("%d ",b[i]);
 printf("\n");
}
void fun(char a[],int b[])
{
 int m,n,x[6]={0,0,0,0,0,0};
 m=strlen(a);
 for(n=0;n {
 if (a[n]=='a')
 
  x[0]++;
 else if (a[n]=='b')
  x[1]++;
 else if (a[n]=='c')
  x[2]++;
 else if (a[n]=='d')
  x[3]++;
 else if (a[n]=='e')
  x[4]++;
 else
  x[5]++;
 }
 for (n=0;n {
  b[n]=x[n];
 }
 
}

回答4:

你的fun函数忘记声明了
在void main前面加上:
void fun(char a[],int b[]);
即:
void fun(char a[],int b[]);
void main()
...

回答5:

在void main上面输入void fun(char a[],int b[]) 你试一下看看对不对