那么exit()如何工作?

com*_*fan 10 c exit

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

int main()
{
    exit(EXIT_SUCCESS);
}
Run Code Online (Sandbox Code Playgroud)

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

warning: control reaches end of non-void function
Run Code Online (Sandbox Code Playgroud)

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

Chr*_*ung 12

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

  • @ compile-fan:不,它告诉编译器该函数不会返回,因此控件永远不会到达main的末尾,因此没有警告. (3认同)
  • @ compile-fan:因为`exit`被指定将其参数传递给父进程.实际上,C库初始化代码实际上只是以这种方式调用你的`main`:`exit(main(argc,argv,envp))`,所以你的`main`是否返回不会影响`exit`是否被调用. (2认同)