Η συνάρτηση atexit () στο C ++ καταγράφει μια συνάρτηση που καλείται κατά τον κανονικό τερματισμό του προγράμματος.
Η συνάρτηση atexit () στο C ++ καταγράφει μια συνάρτηση που καλείται κατά τον κανονικό τερματισμό του προγράμματος.
πρωτότυπο atexit ()
extern int atexit (κενό (* func) (κενό));
Αυτή η συνάρτηση ορίζεται στο αρχείο κεφαλίδας.
παράμετροι atexit ()
- func: Δείκτης στη συνάρτηση που θα κληθεί κατά τον κανονικό τερματισμό του προγράμματος.
atexit () Επιστροφή τιμή
Η συνάρτηση atexit () επιστρέφει:
- Μηδέν εάν η εγγραφή της συνάρτησης είναι επιτυχής.
- Μη μηδέν εάν η εγγραφή της συνάρτησης απέτυχε.
Παράδειγμα 1: Πώς λειτουργεί η λειτουργία atexit ();
#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; )
Όταν εκτελείτε το πρόγραμμα, η έξοδος θα είναι:
Επιτυχής εγγραφή προγράμματος Έξοδος με επιτυχία
Μπορούν να καταχωρηθούν περισσότερες από μία λειτουργίες για εκτέλεση κατά τον τερματισμό.
Εάν έχουν καταχωρηθεί περισσότερες από μία συναρτήσεις atexit, εκτελούνται με την αντίστροφη σειρά, δηλαδή η συνάρτηση που έχει καταχωρηθεί atlast εκτελείται στην αρχή. Η ίδια λειτουργία μπορεί να καταχωρηθεί περισσότερες από μία φορές.
Ο αριθμός των κλήσεων λειτουργιών που μπορούν να καταχωρηθούν στο atexit () εξαρτάται από τη συγκεκριμένη εφαρμογή της βιβλιοθήκης. Ωστόσο, το ελάχιστο όριο είναι 32.
Παράδειγμα 2: Καταχώριση πολλαπλής συνάρτησης με 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; )
Όταν εκτελείτε το πρόγραμμα, η έξοδος θα είναι:
Επιτυχής εγγραφή Exit Function 3 Exit Function 2 Exit Function 1
Εάν μια καταχωρισμένη συνάρτηση ρίχνει μια εξαίρεση χωρίς χειρισμό όταν καλείται κατά τον τερματισμό, καλείται η συνάρτηση τερματισμού ().
Παράδειγμα 3: 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; )
Όταν εκτελείτε το πρόγραμμα, η έξοδος θα είναι:
Η εγγραφή είναι επιτυχής δημιουργεί εξαίρεση