此GCC警告是什么意思?

时间:2019-12-30 02:59:44

标签: c

这是直接来自“ The C programming Language,第二版”的代码。

#include <stdio.h>

main ()

{

printf("hello, world\n");

}

这是GCC错误:

user@root:~/bin$ gcc helloworld.c 
helloworld.c:2:1: warning: return type defaults to ‘int’ [-Wimplicit- int]
 main ()^~~~ 

edit:我刚刚意识到代码确实可以编译。我只是没有意识到它已经覆盖了我编译的另一个程序的文件。我已经编辑了问题本身,因为我认为这更有价值。 (最初我问为什么这个程序没有编译)

4 个答案:

答案 0 :(得分:1)

您尚未包括main的返回类型。您可能希望在其末尾返回0,因为这是没有错误的标准退出代码。修改后的代码将是

#include <stdio.h>

int main() {
    printf("hello, world\n");
    return 0;
}

答案 1 :(得分:0)

尝试:

使用int main(),因为int是main的返回类型。

编辑:

  

在C89中,默认返回类型为int。此默认设置已在中删除   C99和编译器有助于提醒您C语言风格   int main()已过时。

答案 2 :(得分:0)

这不是错误,只是警告。您的代码会编译,尝试使用./a.out

运行生成的二进制文件

GCC只是警告您未为main指定返回类型,它将自动返回整数。

答案 3 :(得分:0)

您的主要签名有误。您应该考虑阅读此答案,以获取主要功能的C11标准化签名: https://stackoverflow.com/a/2108208/8141369