Η συνάρτηση feupdateenv () αποθηκεύει πρώτα τις τρέχουσες εξαιρέσεις κυμαινόμενου σημείου, επαναφέρει το περιβάλλον κινητής υποδιαστολής από το δεδομένο αντικείμενο fenv_t και στη συνέχεια αυξάνει τις εξαιρέσεις που έχουν αποθηκευτεί προηγουμένως
Η συνάρτηση feupdateenv () ορίζεται στο αρχείο κεφαλίδας.
πρωτότυπο feupdateenv ()
int feupdateenv (fenv_t * envp);
Η συνάρτηση feupdateenv () παίρνει ένα δείκτη του τύπου fenv_t ως επιχείρημά του, το οποίο διατηρεί ένα περιβάλλον κινητής υποδιαστολής που είχε οριστεί προηγουμένως χρησιμοποιώντας το feholdexcept ή fegetenv και επαναφέρει αυτό το περιβάλλον κινητής υποδιαστολής μαζί με το τρέχον περιβάλλον.
feupdateenv () Παράμετροι
- envp: Δείκτης στο αντικείμενο fenv_t που έχει οριστεί από μια προηγούμενη κλήση στο feholdexcept ή fegetenv ή ισούται με FE_DFL_ENV.
feupdateenv () Τιμή επιστροφής
- Με επιτυχία, η συνάρτηση feupdateenv () επιστρέφει 0.
- Σε αποτυχία, επιστρέφει μη μηδέν.
Παράδειγμα: Πώς λειτουργεί η λειτουργία feupdateenv ();
#include #include #include #pragma STDC FENV_ACCESS ON using namespace std; void print_exceptions() ( cout << "Raised exceptions: "; if(fetestexcept(FE_ALL_EXCEPT)) ( if(fetestexcept(FE_DIVBYZERO)) cout << "FE_DIVBYZERO "; if(fetestexcept(FE_INEXACT)) cout << "FE_INEXACT "; if(fetestexcept(FE_INVALID)) cout << "FE_INVALID "; if(fetestexcept(FE_OVERFLOW)) cout << "FE_OVERFLOW "; if(fetestexcept(FE_UNDERFLOW)) cout << "FE_UNDERFLOW "; ) else cout << "None"; cout << endl; ) int main() ( fenv_t envp; /* raise certain exceptions */ feraiseexcept(FE_INVALID|FE_DIVBYZERO); print_exceptions(); /* saves and clears current exceptions */ feupdateenv(&envp); print_exceptions(); /* restores saved exceptions */ feupdateenv(&envp); print_exceptions(); return 0; )
Όταν εκτελείτε το πρόγραμμα, η έξοδος θα είναι:
Αυξημένες εξαιρέσεις: FE_DIVBYZERO FE_INVALID Αυξημένες εξαιρέσεις: Κανένα Αυξημένες εξαιρέσεις: FE_DIVBYZERO FE_INVALID