C中的冲突类型

时间:2012-10-13 03:39:13

标签: c

我试图在C中构建一个非常简单的程序,它从函数返回一个浮点值,但由于某种原因我得到了一个错误。

#include<stdio.h>
int main(){
    double returning;
    returning = regre();
    printf("%f", returning);
    return 0;
}
double regre(){
    double re = 14.35;
    return re;
}

我得到的错误是:

  

'regre'的冲突类型

     

此前隐含的regre声明就在这里

3 个答案:

答案 0 :(得分:7)

该错误消息正在告诉您究竟发生了什么 - 存在regre的隐式声明,因为您在main()之后才定义它。只需添加一个前向声明:

double regre();

main()之前,或者只是将整个功能移到那里。

答案 1 :(得分:2)

previous implicit declaration of `regre` was here

如果函数未知,则编译器默认将其视为int functionname()。在您的情况下,int regre()将在此处声明。

conflicting types for 'regre' 

当您注意到实际功能double regre()时,会发生此冲突错误。要解决此问题,应在实际使用之前声明双重regre()函数。

#include<stdio.h>
double regre(); //Forward Declaration
int main(){
    double returning;
    returning = regre();
    printf("%f", returning);
    return 0;
}
double regre(){
    double re = 14.35;
    return re;
}

有关前瞻性声明的更多信息,请参阅以下链接。

http://en.wikipedia.org/wiki/Forward_declaration

答案 2 :(得分:0)

在C中,无论是通过值调用还是通过引用调用函数,默认情况下这些函数都是int类型。当您使用任何类型的函数时,您需要在调用该函数之前在程序中定义函数原型。 最好的方法是在主要自我之前定义所有函数原型,这是编程的好方法。 来到你的程序只需将原型定义为double regre();主要是

double regre();
    main()
      {