如果我使用exit()
,GCC不会发出警告:
int main()
{
exit(EXIT_SUCCESS);
}
如果我们使用任何其他功能,我们肯定会遇到这样的警告:
warning: control reaches end of non-void function
exit()
如何使父函数在不使用编译器生成的return()
的情况下获取其返回值?
答案 0 :(得分:12)
在GNU libc上,exit
声明为__attribute__((__noreturn__))
,告诉gcc函数不返回。
答案 1 :(得分:3)
status参数返回给主机环境。
和
从main函数发出return语句相当于以返回值作为参数调用exit函数。
这是通过函数声明属性(__noreturn__
)实现的(在这种情况下),它告诉编译器它可以被视为一个返回(或者更确切地说,函数不会返回,所以控制永远不会到达主要的结尾。)
答案 2 :(得分:0)
而不是
exit(EXIT_SUCCESS);
有
return(EXIT_SUCCESS);
答案 3 :(得分:0)
问题是您未能包含stdlib.h
,并且您未使用-std=c99
进行编译。在C99中,main
隐含地返回0,如果你跑掉它的末尾。