那么exit()如何工作?

时间:2011-05-28 23:07:25

标签: c exit

如果我使用exit(),GCC不会发出警告:

int main()
{
    exit(EXIT_SUCCESS);
}

如果我们使用任何其他功能,我们肯定会遇到这样的警告:

warning: control reaches end of non-void function

exit()如何使父函数在不使用编译器生成的return()的情况下获取其返回值?

4 个答案:

答案 0 :(得分:12)

在GNU libc上,exit声明为__attribute__((__noreturn__)),告诉gcc函数不返回。

答案 1 :(得分:3)

来自the docs:

  

status参数返回给主机环境。

  

从main函数发出return语句相当于以返回值作为参数调用exit函数。

这是通过函数声明属性(__noreturn__)实现的(在这种情况下),它告诉编译器它可以被视为一个返回(或者更确切地说,函数不会返回,所以控制永远不会到达主要的结尾。)

答案 2 :(得分:0)

而不是

 exit(EXIT_SUCCESS);

 return(EXIT_SUCCESS);

答案 3 :(得分:0)

问题是您未能包含stdlib.h,并且您未使用-std=c99进行编译。在C99中,main隐含地返回0,如果你跑掉它的末尾。