哪位大侠能结合一面的例子,解读一下“函数注册”和“注

[复制链接]
1808|0
 楼主| sxggj 发表于 2008-10-31 13:57 | 显示全部楼层 |阅读模式
在你的程序遭遇致命错误无法继续时,你需要退出,&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;但是,你在退出之前,要执行一些清理&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;,比如,关闭文件,清除缓冲区,关闭已经建立的网络连接等等&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;直接执行exit显然是不可能完成这些的,这里就可以用atexit()&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;注册一些在执行exit()之前要执行的函数&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;正常退出时exit()被最后执行&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;例子:&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;/*&nbsp;&nbsp;&nbsp;atexit&nbsp;&nbsp;&nbsp;example&nbsp;&nbsp;&nbsp;*/&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;#include&nbsp;&nbsp;&nbsp;&ltstdio.h&gt&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;#include&nbsp;&nbsp;&nbsp;&ltstdlib.h&gt&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;void&nbsp;&nbsp;&nbsp;fnExit1&nbsp;&nbsp;&nbsp;(void)&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf&nbsp;&nbsp;&nbsp;(&quot;Exit&nbsp;&nbsp;&nbsp;function&nbsp;&nbsp;&nbsp;1.
&quot;);&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;void&nbsp;&nbsp;&nbsp;fnExit2&nbsp;&nbsp;&nbsp;(void)&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf&nbsp;&nbsp;&nbsp;(&quot;Exit&nbsp;&nbsp;&nbsp;function&nbsp;&nbsp;&nbsp;2.
&quot;);&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;int&nbsp;&nbsp;&nbsp;main&nbsp;&nbsp;&nbsp;()&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;atexit&nbsp;&nbsp;&nbsp;(fnExit1);&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;atexit&nbsp;&nbsp;&nbsp;(fnExit2);&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf&nbsp;&nbsp;&nbsp;(&quot;Main&nbsp;&nbsp;&nbsp;function.
&quot;);&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;&nbsp;&nbsp;0;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;Output:&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;Main&nbsp;&nbsp;&nbsp;function.&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;Exit&nbsp;&nbsp;&nbsp;function&nbsp;&nbsp;&nbsp;2.&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;Exit&nbsp;&nbsp;&nbsp;function&nbsp;&nbsp;&nbsp;1.&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;http://www.cplusplus.com/ref/cstdlib/atexit.html&nbsp;&nbsp;&nbsp;
您需要登录后才可以回帖 登录 | 注册

本版积分规则

230

主题

1397

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部