gpt4 book ai didi

c - 警告 : implicit declaration of function 'Min' is invalid in C99 [-Wimplicit-function-declaration]

转载 作者:行者123 更新时间:2023-11-30 20:50:06 31 4
gpt4 key购买 nike

我收到错误

警告:函数“Min”的隐式声明在 C99 中无效 [-Wimplicit-function-declaration]

当尝试在不接触主输入的情况下从 3 个输入中查找最小值时。

#include <stdio.h>

void minVal (double x, double y, double z, double minVal)
{
if (x<y && x<z)
minVal = x;

else if (y<x && y<z)
minVal = y;

else if (z<x && z<y)
minVal = z;
}

int main(void) {
double x, y, z, minVal;

printf("Please enter three numeric values: ");
scanf("%lf%lf%lf", &x, &y, &z);
minVal = Min(x, y, z);
printf("Min(%0.10f, %0.10f, %0.10f) = %0.10f\n", x, y, z, minVal);

return 0;
}

最佳答案

当你的老师喊出缺课的学生时,所有学生可能会大喊“他不在这里!”

让我们看看警告:

warning: implicit declaration of function 'Min' is invalid in C99 [-Wimplicit-function-declaration]

这意味着您试图使用 Min 而不在代码中声明它,这是不允许的。这不是一个错误,而是一个警告,最终会导致链接器错误。

这里:

minVal = Min(x, y, z);

因此,您要么需要编写一个名为 Min 的函数,要么需要将 Min 替换为您已经声明的某个函数。例如,

void minVal (double x, double y, double z, double minVal)

现在,即使您将调用从 Min 更改为 minVal,它也不起作用。因为您的代码有一个名为 minVal 的函数和一个同名的变量。那很困惑。养成避免使用相同名称声明变量和函数的习惯。

此函数返回 void,并且您正在尝试确定以 double 作为数据类型的 3 个输入中的最小值,并将值分配给作为争论。可行,但与返回值相比并不方便,对吗?

When trying to find the minimum value from 3 inputs without touching the main.

我建议这样:

#include <stdio.h>

double Min(double x, double y, double z)
{
if (x<y && x<z)
return x;
else if (y<x && y<z)
return y;
else if (z<x && z<y)
return z;
else
return 0.0;
}

int main(void)
{
double x, y, z, minVal = 0.0;

printf("Please enter three numeric values: ");
scanf("%lf%lf%lf", &x, &y, &z);
minVal = Min(x, y, z);
printf("Min(%0.10f, %0.10f, %0.10f) = %0.10f\n", x, y, z, minVal);

return 0;
}

此代码与您提出的代码相比有以下更改:

  • 函数从 minVal 重命名为 Min。请注意,通常首选使用动词/ Action 作为函数名称,这样很容易解释函数的作用。因此,如果我可以自由更改 main() 函数,我将在所有位置使用名称 Get_minValue 而不是 Min (声明和函数调用)。
  • Min 的返回类型更改为 double,以便我可以返回该值,而不是将其分配给参数。

您仍然可以通过删除 minVal 变量来使其变得更好,我会让您弄清楚:-)

此外,C99 已经很旧了,下次编译代码时,请确保使用 -std=c11 -pedantic-errors 进行编译。

Here您可以找到有关编译器选项的更多信息。

关于c - 警告 : implicit declaration of function 'Min' is invalid in C99 [-Wimplicit-function-declaration],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51818429/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com