警告:返回类型默认为'int'[-Wreturn-type]

时间:2012-09-11 15:50:10

标签: c compiler-warnings

我是一位开始学习C的Linux用户,我正在尝试编译我输入的这个来源:

#include <stdio.h>
main()
{
        float c,d;
        c = 10215.3;
        d = c / 3;
        printf("%3.2f\n",d);
        return 0;
}

使用我编写的makefile编译:

cc -Wall -g     printf.c   -o printf

但是我收到了这个警告:

  

printf.c:2:1:警告:返回类型默认为'int'[-Wreturn-type]

它编译代码并获得所需的输出,但我想了解这意味着什么

3 个答案:

答案 0 :(得分:20)

main()

应该是

int main()

在C89中,默认的返回类型被假定为int,这就是它的工作原理。

答案 1 :(得分:0)

在C89中,默认的返回类型是 int 。在C99中删除了此默认设置,编译器有助于提醒您在 main()之前没有 int 的C样式已过期。

参见C89规范第3.5.2节“类型说明符”:

  • “每个类型说明符列表应为以下集合之一:[...] + int 签名 signed int < / strong>,或没有类型说明符“。

  • 在语义的第二段中:“除了比特字段[blabla]”之外,每个[...]集都指定相同的类型。所以这意味着“没有类型说明符”与 int 相同。

在C99中,删除了“或无类型说明符”部分。 (但您仍然可以在没有 int 部分的情况下编写签名。)

答案 2 :(得分:0)

解决方案:您定义函数的位置。您必须决定变量的数据类型

int function(n)

应该是:

int function(int n)

在 C89 中,默认返回类型是 int。此默认值已在 C99 中删除,编译器有助于提醒您在 main() 之前没有 int 的 C 样式已过时。