C语言 redefinition; different basic types 错误?
程序如下:
#include <stdio.h>
void readdata (float score[10])
{
int i;
printf("enter 10 student's scores:\n");
for(i=0;i<10;i++)
scanf("%f",&score[i]);
return;
}
float aver(float score[10])
{
float sum;
int i;
for(sum=0,i=0;i<10;i++)
sum=sum+score[i];
return(sum/10);
}
void printf(float score[10],float ave)
{
int i;
printf("the score which are below the average:\n");
for(i=0;i<10;i++)
if(score[i]<ave)
printf("%8.2f,acore[i]);
return;
}
main()
{
void readdata (float score[10]);
float aver(float score[10]);
void printf(float score[10],float ave);
float ave,score[10];
readdata(score);
ave=aver(score);
printf("average=%6.2f\n",ave);
printf(score,ave);
}
编译时遇到“error C2371: 'printf' : redefinition; different basic types”的错误,可是我检查程序,并未发现定义了两种数据类型的统一数据,希望高手帮忙分析解答... 展开
在asd函数中调用了er函数,而编译器之前并为看到有该函数的定义,因此编译器进行了一个隐含的函数原型解释,即inter(),到之后的er函数定义时,编译器发现同之前的隐含的原型不匹配,因此出错。
#includevoidasd(){
er();
}
voider(intb){
printf("er");
}
voidmain(){asd();}
扩展资料
C语言要定义不同的数据类型注意事项
1、char类型一般只占一个字节,short通常占两个字节,其他类型有时候常常因计算机的架构不同,占用空间会有所差异。首先定义了一个char变量,一个double变量,然后分别对这两个变量赋值。顺便把各种数据类型占用空间大小打印出来了。
2、编译执行,输出“1,2,8,4,8”,不同的机器可能有所差异,但这不是重点,弄清楚不同的数据类型占用的空间不同就可以了。计算机使用不同的数据类型,会有效率上的差异。
主要是void printff(float score[10],float ave) 与库函数printf重复了
#include <stdio.h>
void readdata (float score[10])
{
int i;
printf("enter 10 student's scores:\n");
for(i=0;i<10;i++)
scanf("%f",&score[i]);
return;
}
float aver(float score[10])
{
float sum;
int i;
for(sum=0,i=0;i<10;i++)
sum=sum+score[i];
return(sum/10);
}
void printff(float score[10],float ave)
{
int i;
printf("the score which are below the average:\n");
for(i=0;i<10;i++)
if(score[i]<ave)
printf("%8.2f",score[i]);
return;
}
main()
{
void readdata (float score[10]);
float aver(float score[10]);
void printff(float score[10],float ave);
float ave,score[10];
readdata(score);
ave=aver(score);
printf("average=%6.2f\n",ave);
printff(score,ave);
}
这是重复定义的错误。遇到这个错误,一般按照下列思路查错:
首先检查有没有重复定义,可以定位到错误的地方,用全文搜索的方法,查看有没有重复定义。
如果确定没有重复定义,那可能是你在.h头文件中定义了变量或者函数,而这个.h头文件被多次包含。一般为了避免这种头文件被多次包含造成的重定义错误,在.h头文件中会加入下列代码:
#ifndef _TEST_H
#define _TEST_H //一般是文件名的大写,其他的也无所谓
头文件结尾加一句:
#endif
这样就能防止重复定义了。你所有的变量和函数的声明都在这中间写就可以了。