冲突类型C
我遇到了一些冲突类型的问题,我不明白。我想改变之前设置的日期,但这让我很头疼。冲突类型C
int main(){
float any=11;
llegirany(&any);
printf("%f",any);
getch();
}
void llegirany(float * any){
float auxi;
auxi=llegirinterval(1,31);
*any= auxi;
}
float llegirinterval(float n1,float n2){
float aux;
do{
scanf("%f",&aux);
}while(aux>n2 || aux<n1);
return aux;
}
而且我得到这个输出误差:
65 7 D:\DAM\PRo\pruebaconio.c [Error] conflicting types for 'llegirinterval' 62 7 D:\DAM\PRo\pruebaconio.c [Note] previous implicit declaration of 'llegirinterval' was here
有人可以帮我吗?
您在使用函数llegirinterval
之前声明了它。
你应该移动定义的llegirinterval
的llegirany
或至少的定义之前声明llegirinterval
使用数据之前。
检查difference between definition and declaration
EDITED以下@Olaf评论。
事实上,没有函数原型,也没有'#include'文件。 –
在_definition_很好之前使用函数。但是你需要它的_declaration_。 – Olaf
在使用它之前,尝试向函数llegirinterval()添加一个声明。你也应该声明中包含的代码以及其它功能:
void llegirany(float *any);
float llegirinterval(float n1,float n2);
int main(){
float any=11;
...
void llegirany(float * any){
float auxi;
auxi=llegirinterval(1,31);
*any= auxi;
}
默认情况下,C认为,尚未明确尚未类型为INT任何变量名的类型。所以,看到来电时:
llegirany(&any);
在主第三行,编译器说:“啊哈,一个名为llegirany函数返回一个INT
后来,当。编译器获取到实际功能定义的功能,它会很困惑 - 等一下,我认为llegirany返回INT,现在你告诉我它返回浮动
。你应该在main()之前添加* both *函数原型,因为'main()'调用另一个函数。在源代码中,每一个都在调用它的那个之下。 –
@天气风向标 - 正确。 –
可能的重复:http://*.com/questions/34009277/c-conflicting-type-bug –