error: a parameter list without types is only allowed in a function definition

error: a parameter list without types is only allowed in a function definition

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

这是我的代码:

#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);
          ^

你的问题

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

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

解决方案

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

所以只需这样做:

tri(x, y, z);

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

下面建议进行一些小的更改 - 最值得注意的是,您将函数的 return 值放入顶部声明的名为 valbool 中,然后打印出来最后 x,y,zval 的值是真还是假 return 由您的函数编辑。

请注意,您需要使用您编写的函数和 return 值,这就是为什么您需要 val = tri (x, y, z); 来捕获 returned 值的原因,您然后可以打印出来...

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

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

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

    val = tri (x, y, z);
    printf("x=%g, y=%g, z=%g\n",x,y,z);
    printf("%s", val ? "true" : "false");
    return 0;
}

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;
    }
}