C語言return, exit, abort的區別
一般情況下,在C語言中退出一個程序用return
,如果在main
函數中,return
在清理局部對象之後,會調用exit
函數。
和return
相比,exit
並不會銷毀局部對象,而是會銷毀所有靜態與全局對象、清空緩沖區,關閉IO通道。終止前則會調用atexit()
所定義的函數。
atexit也在stdlib.h中,其聲明式為
int atexit(void (*func)(void))
當程序中止時,就會調用函數指針func
。
//atexit.c #include <stdio.h> #include <stdlib.h> void funcA (){ printf("call from atexit\n"); } int main (){ atexit(funcA); //將funcA註冊為中止函數 printf("exiting...\n"); return 0; }
測試結果如下:
>gcc atexit.c
>a.exe
exiting…
call from atexit
如果希望什麼都不做就退出程序,可以使用abort()
,將abort()
;插入到return 0
前面,則其輸出結果如下,並不會調用funcA
。
>a.exe
exiting…
到此這篇關於C語言return
, exit
, abort
的區別的文章就介紹到這瞭,更多相關C語言return, exit, abort區別內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- 解析C/C++指針、函數、結構體、共用體
- c語言中exit和return的區別點總結
- C語言函數封裝及變量的作用域
- C++詳細講解print緩沖區的刷新
- C語言中#define定義的標識符和宏實例代碼