Funkcija fesetexceptflag () programmā C ++ nosaka norādītos peldošā komata izņēmuma karodziņus no rādītāja objekta peldošā komata vidē.
Funkcija fesetexceptflag () ir definēta galvenes failā.
fesetexceptflag () prototips
int fesetexceptflag (const fexcept_t * flagp, int izslēdz);
Funkcija fesetexceptflag () mēģina kopēt visu ar izņēmumiem norādīto peldošā komata izņēmuma karodziņu saturu no flagp peldošā komata vidē.
Šī funkcija tikai modificē karodziņus un nerada nekādus izņēmumus.
fesetexceptflag () parametri
- flagp: rādītājs objektam fexcept_t, no kura tiks nolasīti karodziņi.
- izņēmumi: iestatāmo izņēmumu karodziņu saraksts Bitmask.
Makro | Tips | Apraksts |
---|---|---|
FE_DIVBYZERO | Pole kļūda | Dalīšana ar nulli |
FE_INEXACT | Neprecīzi | Nav precīzi rezultāti, piemēram, (1.0 / 3.0) |
FE_INVALID | Domēna kļūda | Vismaz viens izmantotais arguments ir vērtība, kurai funkcija nav definēta |
FE_OVERFLOW | Pārplūdes diapazona kļūda | Rezultāts ir pārāk liels, lai to attēlotu ar atgriešanās veidu |
FE_UNDERFLOW | Pārplūdes diapazona kļūda | Rezultāts ir pārāk mazs, lai to attēlotu ar atgriešanās veidu |
FE_ALL_EXCEPT | Visi izņēmumi | Visi izņēmumi, kurus atbalsta ieviešana |
fesetexceptflag () Atgriežamā vērtība
- Funkcija fesetexceptflag () pēc panākumiem atgriež nulli, pretējā gadījumā nulle.
Piemērs: Kā darbojas funkcija fesetexceptflag ()?
#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() ( fexcept_t excepts; feraiseexcept(FE_DIVBYZERO); /* save current state*/ fegetexceptflag(&excepts,FE_ALL_EXCEPT); print_exceptions(); feraiseexcept(FE_INVALID|FE_OVERFLOW); print_exceptions(); /* restoring previous exceptions */ fesetexceptflag(&excepts,FE_ALL_EXCEPT); print_exceptions(); return 0; )
Palaidot programmu, izeja būs:
Paaugstinātie izņēmumi: FE_DIVBYZERO Paaugstinātie izņēmumi: FE_DIVBYZERO FE_INVALID FE_OVERFLOW Paaugstinātie izņēmumi: FE_DIVBYZERO