我是一位开始学习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]
它编译代码并获得所需的输出,但我想了解这意味着什么
答案 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 样式已过时。