gpt4 book ai didi

c - 不应该的函数的隐式声明?

转载 作者:太空宇宙 更新时间:2023-11-04 06:10:55 25 4
gpt4 key购买 nike

我正在使用结构和 typedef 以及一个在本地工作的外部文件,但在自动检查器上我得到函数“gcd”的隐式声明

此代码由几个函数组成,这些函数执行返回和等基本操作。交给我们的函数 gcd 计算最大公约数,这两个代码/片段都#included 在不同的 main.c 中: #include "fraction.h" #include "fraction.c"

/* Reduce fraction */
void reduceFraction(Fraction *val) {
unsigned int fr = gcd(val->numerator, val->denominator);
val->numerator = val->numerator / fr;
val->denominator = val->denominator / fr;
}

这是有效的gcd

unsigned int gcd(unsigned int u, unsigned int v)
{
// simple cases (termination)
if (u == v)
return u;

if (u == 0)
return v;

if (v == 0)
return u;

// look for factors of 2
if (~u & 1) // u is even
{
if (v & 1) // v is odd
return gcd(u >> 1, v);
else // both u and v are even
return gcd(u >> 1, v >> 1) << 1;
}

if (~v & 1) // u is odd, v is even
return gcd(u, v >> 1);

// reduce larger argument
if (u > v)
return gcd((u - v) >> 1, v);

return gcd((v - u) >> 1, u);
}

出现的错误是:函数‘gcd’的隐式声明[-Wimplicit-function-declaration]

最佳答案

警告告诉您该函数在使用前未声明。该函数将假定返回一个 int 类型或参数数量没有限制。您可以通过在包含的头文件中或模块中更早的位置声明该函数来消除此警告并强制对该函数进行更好的类型检查:

unsigned int gcd(unsigned int u, unsigned int v);

关于c - 不应该的函数的隐式声明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56996755/

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