C ++ funkcija fegetexceptflag () gauna slankiojo kablelio išimčių vėliavas, nurodytas argumente, kurias jis išskiria, ir saugo ją flagp nurodytame taške.
Funkcija fetgetexceptflag () yra apibrėžta antraštės faile.
fegetexceptflag () prototipas
int fegetexceptflag (fexcept_t * flagp, int išskyrus);
Argumentas „nepaiso“ gali būti slankiojo kablelio išimties makrokomandų bitų ARBA
fegetexceptflag () parametrai
- flagp: žymeklis į objektą fexcept_t, kuriame bus saugomos vėliavos.
- išskyrus: „Bitmask“ sąrašas išimčių vėliavų gauti.
Makrokomanda | Tipas | apibūdinimas |
---|---|---|
FE_DIVBYZERO | Pole klaida | Dalyba iš nulio |
FE_INEXACT | Tikslus | Netikslūs rezultatai, pvz., (1.0 / 3.0) |
FE_INVALID | Domeno klaida | Bent vienas naudojamas argumentas yra reikšmė, kuriai funkcija nėra apibrėžta |
FE_OVERFLOW | Perpildymo diapazono klaida | Rezultatas yra per didelis, kad būtų galima parodyti grąžinimo tipą |
FE_UNDERFLOW | Nepakankamo diapazono klaida | Rezultatas yra per mažas, kad būtų galima pateikti grąžinimo tipą |
FE_ALL_EXCEPT | Visos išimtys | Visos išimtys, kurias palaiko įgyvendinimas |
fegetexceptflag () Grąžinimo vertė
- Funkcija „fegetexceptflag ()“ sėkmės atveju grąžina nulį, kitaip - nulis.
Pavyzdys: Kaip veikia funkcija fegetexceptflag ()?
#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; )
Kai paleisite programą, išvestis bus:
Iškeltos išimtys: FE_DIVBYZERO Iškeltos išimtys: FE_DIVBYZERO FE_INVALID FE_OVERFLOW Iškeltos išimtys: FE_DIVBYZERO