我在 Ubuntu 中使用 Emacs 输入了以下代码并使用命令行进行编译
#include <stdio.h>
int main(void)
{
printf("Hello World!\n\n");
return 0;
}
主函数参数中包含 void 会返回以下警告
helloworld.c: In function ‘main’: helloworld.c:6:1: warning: control reaches end of non-void function [-Wreturn-type] } ^
当我删除括号内的“void”时,程序编译时没有任何错误。该程序中的 main(void)
有什么不正确的地方?
编译命令是
gcc -Wall -ggdb helloworld.c -o 你好
最佳答案
该错误与 main()
签名中的 void
无关,int main(void)
是正确的当您不需要处理命令行参数时,这是定义 main()
的方法。
该错误意味着您定义了 int main(void)
并且没有从函数返回值。像这样
#include <stdio.h>
int main(void)
{
printf("Hello World!\n");
}
在较新版本的 gcc 中,已删除 main()
的此警告,因为 main()
隐式返回 0
当程序退出时,除非您使用 exit()
另有指示或从 main()
显式返回。
普通函数仍然会触发此警告,并且它有助于防止由于未从函数返回并 try catch 返回值而导致的未定义行为。
关于c - Hello world 程序在 main 中出现 void 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34442705/