包含math.h头文件后,出现“implicit declaration…”错误

18

我使用了abs()函数,并在代码顶部添加了#include <math.h>,但我一直收到这个错误:

hello.c:20:11: warning: implicit declaration of function 'abs' is invalid in C99
[-Wimplicit-function-declaration]
      int a = abs(arrOfHour[i] - hour) * 60 + minute;
              ^

我正在使用LLVM编译器。

虽然我已经包含了math.h,但为什么会出现这个错误?


你能发布代码吗,特别是你称之为“abs”的部分? - holgac
@holgac,这不是必要的。OP调用abs的部分在警告信息中已经提到了。 - Spikatrix
@CoolGuy,是的,我忘记了未声明的函数会被隐式声明,抱歉。无论如何,以后你可以使用manpages来检查函数的声明位置,网址为http://linux.die.net/man/3/abs。 - holgac
顺便提一下:怀疑代码中的 int a = abs(arrOfHour[i] - hour) * 60 + minute; 和之前计算的 minute 不会按预期工作。也许需要像这样 a = abs(arrOfHour[i]*60 + arrOfMin[i] - (hour*60 + min)) - chux - Reinstate Monica
2个回答

37

1

虽然缺少函数的头文件,但是由于 abs 函数需要库文件 math.h 以及 stdlib.h ,因此后者必然缺失。 该代码还包含了对库文件 stdlib.h 的调用。

#include <stdlib.h>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接