10

当 main() 在 C 中退出时,是否可以调用额外的函数?

谢谢!

4

4 回答 4

23

您可以使用该函数注册函数以在main退出后运行。atexit

MSDN 有一个很好的简洁示例来说明这是如何完成的。基本上,注册的功能是按照注册atexit时的相反顺序执行的。

于 2009-11-21T21:02:02.317 回答
9

试试这个atexit()功能:

void myfunc() {
    /* Called when the program ends */
}

int main( int arc, char *argv[] ) {
    atexit( myfunc );
    ...
    return 0;
}
于 2009-11-21T21:03:17.210 回答
2

很好的问题和答案。只是一个旁注。滥用 Delphi 库中的类似功能会导致应用程序在关闭时非常缓慢。

于 2009-11-21T21:15:29.467 回答
1

虽然atexit()是注册函数以在进程终止时运行的标准,但 GCC 提供了一个析构 函数属性*,它导致函数在main()完成或exit()已被调用时自动调用。

void __attribute__ ((destructor)) my_fini(void);

* GCC 特定

于 2011-02-03T21:01:17.083 回答