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

时间:2015-05-26 07:39:19

标签: gcc gcc-warning

使用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编译了相同的代码,并没有产生任何警告。

2 个答案:

答案 0 :(得分:2)

abs()函数在<stdlib.h>中声明,但您未包含该函数。

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

答案 1 :(得分:1)

尝试在代码中加入<stdlib.h>abs()函数在<stdlib.h>

中定义