5

我试图用 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 声明在这里

4

3 回答 3

9

该错误消息准确地告诉您发生了什么 - 有一个隐式声明,regre因为您直到 after 才定义它main()。只需添加一个前向声明:

double regre();

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

于 2012-10-13T03:41:57.280 回答
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

于 2012-10-13T06:08:08.353 回答
0

在 C 中,每当您通过按值调用或按引用调用来使用函数时,这些函数默认为 int 类型。当您使用任何类型的函数时,您需要在调用该函数之前在程序中定义函数原型。最好的方法是在 main it self 之前定义所有函数原型,这是编程的好方法。进入您的程序只需将原型定义为 double regre(); 主要之前

double regre();
    main()
      {
于 2013-02-02T21:18:46.730 回答