C ++ 'daki atexit () işlevi, normal program sonlandırmasında çağrılacak bir işlevi kaydeder.
C ++ 'daki atexit () işlevi, normal program sonlandırmasında çağrılacak bir işlevi kaydeder.
atexit () prototipi
extern int atexit (void (* func) (void));
Bu işlev başlık dosyasında tanımlanmıştır.
atexit () Parametreler
- func: Normal program sonlandırmasında çağrılacak işlevin işaretçisi.
atexit () Dönüş değeri
Atexit () işlevi şunu döndürür:
- İşlev kaydı başarılıysa sıfır.
- İşlev kaydı başarısız olursa sıfır değil.
Örnek 1: atexit () işlevi nasıl çalışır?
#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; )
Programı çalıştırdığınızda, çıktı:
Kayıt Başarılı Program Başarıyla Çıkılıyor
Sonlandırmada çalıştırmak için birden fazla işlev kaydedilebilir.
Birden fazla atexit işlevi kayıtlıysa, bunlar ters sırada yürütülür, yani atlast kaydedilen işlev ilk başta çalıştırılır. Aynı işlev birden fazla kaydedilebilir.
Atexit () ile kaydedilebilecek işlev çağrılarının sayısı, belirli kütüphane uygulamasına bağlıdır. Ancak minimum sınır 32'dir.
Örnek 2: Atexit () ile birden çok işlevi kaydetme
#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; )
Programı çalıştırdığınızda, çıktı:
Kayıt başarılı Çıkış Fonksiyon 3 Çıkış Fonksiyon 2 Çıkış Fonksiyon 1
Kayıtlı bir işlev, sonlandırmada çağrıldığında işlenmeyen bir istisna atarsa, terminate () işlevi çağrılır.
Örnek 3: işlenmemiş istisna atan işlevle atexit ()
#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; )
Programı çalıştırdığınızda, çıktı:
Kayıt başarılı bir şekilde İstisna Oluşturur