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

函数abs的隐式声明-gcc-5.1.0,gcc,gcc-warning,Gcc,Gcc Warning,使用gcc-5.1.0编译以下代码会产生警告: warning: implicit declaration of function ‘abs’ [-Wimplicit-function-declaration] 代码: #包括 #包括 内部主(空) { printf(“%d\n”,abs(-1)); 返回0; } 我已经用gcc-4.9.2编译了相同的代码,它没有产生任何警告。您未包含的中声明了abs()函数 GCC 4.9.2没有抱怨,因为默认编译模式是C89/C90(-std=gnu89

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

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

#包括
#包括
内部主(空)
{
printf(“%d\n”,abs(-1));
返回0;
}
我已经用gcc-4.9.2编译了相同的代码,它没有产生任何警告。

您未包含的
中声明了
abs()
函数

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

尝试在代码中包含
abs()
函数在

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

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

  return 0;
}