【问题标题】:abs 'implicit declaration...' error after including math.h包含 math.h 后的 abs '隐式声明 ...' 错误
【发布时间】:2015-06-17 03:22:36
【问题描述】:

我使用了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 ,这不是必需的。 OP 调用abs 的部分在警告消息中。
  • @CoolGuy 是的,我忘记了未声明的函数是隐式声明的,抱歉。无论如何,对于将来,您可以使用 manpageslinux.die.net/man/3/abs 检查函数的声明位置
  • 顺便说一句:可疑代码的 int a = abs(arrOfHour[i] - hour) * 60 + minute; 及其先前对 minute 的计算将无法正常工作。也许想要a = abs(arrOfHour[i]*60 + arrOfMin[i] - (hour*60 + min))之类的东西

标签: c math.h absolute-value


【解决方案1】:

我将直接从文档中引用:"Prototypes for abs, labs and llabs are in stdlib.h"

根据经验,对浮点数进行运算的数学函数在 math.h 中,对整数进行运算的函数在 stdlib.h 中。

如果您需要更多信息,请参阅 C 数学函数 pretty good Wikipedia article

【讨论】:

    猜你喜欢
    • 2021-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-20
    • 1970-01-01
    • 2015-09-27
    • 2013-03-20
    • 2018-06-11
    相关资源
    最近更新 更多