Fungsi atexit () dalam C ++ mendaftarkan fungsi yang akan dipanggil pada penamatan program biasa.
Fungsi atexit () dalam C ++ mendaftarkan fungsi yang akan dipanggil pada penamatan program biasa.
prototaip atexit ()
extern int atexit (void (* func) (void));
Fungsi ini ditentukan dalam fail header.
atexit () Parameter
- func: Pointer ke fungsi yang akan dipanggil pada penamatan program biasa.
atexit () Nilai pulangan
Fungsi atexit () mengembalikan:
- Sifar jika pendaftaran fungsi berjaya.
- Tidak sifar jika pendaftaran fungsi gagal.
Contoh 1: Bagaimana fungsi atexit () berfungsi?
#include #include using namespace std; void bye() ( cout << "Program Exiting Successfully"; ) int main() ( int x; x = atexit(bye); if (x != 0) ( cout << "Registration Failed"; exit(1); ) cout << "Registration successful" << endl; return 0; )
Semasa anda menjalankan program, outputnya adalah:
Pendaftaran Program Berjaya Keluar Berjaya
Lebih daripada satu fungsi dapat didaftarkan untuk dilaksanakan semasa penamatan.
Sekiranya lebih daripada satu fungsi atexit didaftarkan, fungsi tersebut dijalankan dalam urutan terbalik, iaitu fungsi atlast yang didaftarkan dijalankan pada mulanya. Fungsi yang sama boleh didaftarkan lebih dari satu kali.
Jumlah panggilan fungsi yang dapat didaftarkan dengan atexit () bergantung pada pelaksanaan perpustakaan tertentu. Bagaimanapun had minimum adalah 32.
Contoh 2: Mendaftarkan pelbagai fungsi dengan atexit ()
#include #include using namespace std; void exit1() ( cout << "Exit Function 1" << endl; ) void exit2() ( cout << "Exit Function 2" << endl; ) void exit3() ( cout << "Exit Function 3" << endl; ) int main() ( int x1, x2, x3; /* Executed at last*/ x1 = atexit(exit1); x2 = atexit(exit2); /* Executed at first */ x3 = atexit(exit3); if ((x1 != 0) or (x2 != 0) or (x3 != 0)) ( cout << "Registration Failed"; exit(1); ) cout << "Registration successful" << endl; return 0; )
Semasa anda menjalankan program, outputnya adalah:
Pendaftaran berjaya Fungsi Keluar 3 Fungsi Keluar 2 Fungsi Keluar 1
Sekiranya fungsi yang didaftarkan melontarkan pengecualian yang tidak ditangani ketika dipanggil pada penamatan, fungsi putus () dipanggil.
Contoh 3: atexit () dengan fungsi membuang pengecualian yang tidak dikendalikan
#include #include using namespace std; void bye() ( cout << "Generates Exception"; int a = 5, b = 0; int x = a/b; /* Program will terminate here */ cout << "Division by zero"; ) int main() ( int x; x = atexit(bye); if (x != 0) ( cout << "Registration Failed"; exit(1); ) cout << "Registration successful" << endl; return 0; )
Semasa anda menjalankan program, outputnya adalah:
Pendaftaran berjaya Menjana Pengecualian