错误:只允许在函数定义中使用不带类型的参数列表

时间:2018-03-30 09:34:05

标签: c function cs50

我正在学习如何创建和使用函数。我的代码没有编译,但我似乎无法弄清楚我做错了什么。

这是我的代码:

#include <stdio.h>
#include <cs50.h>
#include <stdbool.h>

bool tri (double x, double y, double z);

int main(void)
{
    double x = get_double("Give:");
    double y = get_double("Another:");
    double z = get_double("Now:");

    bool tri (x, y, z);
}

bool tri (double x, double y, double z)
{
    if (x<1 || y<1 || z<1)
    {
        return false;
    }

    if (x+y > z && y+z > x && z+x > y)
    {
        return true;
    }

    else
    {
        return false;
    }
}

当我尝试编译此代码时,出现以下错误:

error: a parameter list without types is only allowed in a function definition
bool tri (x, y, z);
          ^

2 个答案:

答案 0 :(得分:2)

您的问题

您编写的内容被编译器识别为function prototype。所以它告诉你应该有这样的东西,类型:

bool tri(double x, double y, double z);

解决方案

在这里,您不需要函数原型,而是想要调用您的函数。 调用函数时无需指定返回类型。

所以简单地这样做:

tri(x, y, z);

...而不是bool tri(x, y, z);

答案 1 :(得分:1)

下面建议进行一些小的更改 - 最值得注意的是,您将函数的返回值放在顶部声明的名为bool的{​​{1}}中,然后在结尾打印出{的值{1}}和val,这是您的函数返回的真或假。

请注意,您需要使用您编写的函数以及返回值的内容,这就是您需要x,y,z之类的内容来捕获返回值的原因,然后您可以打印出来...

val