我已经定义了函数,但是仍然收到错误消息,找不到定义

时间:2019-11-24 15:39:28

标签: c function

对于为什么我的函数定义没有在这里被弄糊涂了。

double formula(double far, double cel);

double getDegrees(double far);

void display(double far, double cel);

int main()
{
    double far = 0, cel = 0;

    far = getDegrees(far);
    cel = formula(far, cel);
    display(far, cel);

    return 0;
}

double getDegrees(far)
{
    printf("Enter degrees fahrenheit\n");
    scanf_s("%lf", &far);
    return far;
}

double formula(cel, far)
{
    cel = (5.0 / 9) * (far - 32);
    return cel;
}

void display(cel, far)
{

    printf("%lf\n", cel);
    return;
}

2 个答案:

答案 0 :(得分:1)

您的函数声明包含参数的类型信息,您需要在函数定义中重复此信息。例如:

double getDegrees(double far)
{
    printf("Enter degrees fahrenheit\n");
    scanf_s("%lf", &far);
    return far;
}

编译器不会自动将类型信息匹配起来。

答案 1 :(得分:0)

如果您在代码中的int main()上定义了函数,那么您的程序就知道您将使用哪些函数,可以用两种方式声明它们:

double formula(double far, double cel); // (1) type + variable name
double formula(double, double);         // (2) only type

但是在int main() {...}之后,您必须(1)标题声明函数,这样函数就知道向其发送了什么变量,如何调用它们以及如何调用它们。类型为,因此代码为:

double formula(double far, double cel); // or double formula(double, double)
double getDegrees(double far);
void display(double far, double cel);

int main() { /* main block, functions calls etc. */}

double formula(double far, double cel) { /* function declaration */ }
double getDegrees(double far)          { /* function declaration */ }
void display(double far, double cel)   { /* function declaration */ }

为了知道您的代码中是否存在任何警告或错误,请确保使用以下标记进行编译:{{1​​}}。

技巧也很简单--Werror -Wall -Wextra -pedantic函数没有要返回的任何“信息”,因此您不必在其体内使用void