函数 abs 的隐式声明 - gcc-5.1.0

Implicit declaration of function abs - gcc-5.1.0

使用 gcc-5.1.0 编译以下代码会产生警告:

warning: implicit declaration of function ‘abs’ [-Wimplicit-function-declaration]

代码:

#include <stdio.h>
#include <math.h>

int main (void)
{
  printf ("%d\n", abs (-1));

  return 0;
}

我用 gcc-4.9.2 编译了相同的代码,它没有产生任何警告。

abs() 函数是在 <stdlib.h> 中声明的,您没有包含它。

GCC 4.9.2 没有抱怨,因为默认的编译模式是 C89/C90 (-std=gnu89) 并且函数在 C89 中使用之前不需要声明,只要它们返回一个int,但默认编译模式在 GCC 5.1.0 中更改为 C11 (-stdd=gnu11)(请参阅 release notes)并且在 C11 中函数必须在它们被调用之前声明(或定义)使用过。

尝试在您的代码中包含 <stdlib.h>abs() 函数在 <stdlib.h>

中定义