Fesetexceptflag () -funktionen i C ++ indstiller angivne undtagelsesflag for flydende punkt fra et markørobjekt til det flydende punktmiljø.
Funktionen fesetexceptflag () er defineret i headerfilen.
fesetexceptflag () prototype
int fesetexceptflag (const fexcept_t * flagp, int excepts);
Funktionen fesetexceptflag () forsøger at kopiere alt indholdet af undtagelsesflagene med flydende punkt, der er angivet med undtagelser fra flagp, til flydende punktmiljøet.
Denne funktion ændrer kun flagene og hæver ikke nogen undtagelser.
fesetexceptflag () Parametre
- flagp: En markør til et fexcept_t-objekt, hvor flagene læses fra.
- excepts: Bitmask-liste over undtagelsesflag, der skal indstilles.
Makro | Type | Beskrivelse |
---|---|---|
FE_DIVBYZERO | Stangfejl | Opdeling med nul |
FE_INEXACT | Inexakt | Ikke nøjagtige resultater såsom (1.0 / 3.0) |
FE_INVALID | Domæne fejl | Mindst et anvendt argument er en værdi, som funktionen ikke er defineret for |
FE_OVERFLOW | Fejl ved overløbsområde | Resultatet er for stort i størrelse til at blive repræsenteret af returtypen |
FE_UNDERFLOW | Fejl i underflowområdet | Resultatet er for lille i størrelse til at blive repræsenteret af returtypen |
FE_ALL_EXCEPT | Alle undtagelser | Alle undtagelser understøttet af implementeringen |
fesetexceptflag () Returværdi
- Funktionen fesetexceptflag () returnerer nul efter succes, ellers nul.
Eksempel: Hvordan fungerer funktionen 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; )
Når du kører programmet, vil output være:
Hævede undtagelser: FE_DIVBYZERO Højde undtagelser: FE_DIVBYZERO FE_INVALID FE_OVERFLOW Hævede undtagelser: FE_DIVBYZERO