De functie fegetexceptflag () in C ++ haalt uitzonderingsvlaggen met drijvende komma die het argument behalves specificeren, en slaat het op in het punt dat is gespecificeerd door flagp.
De functie fetgetexceptflag () is gedefinieerd in het header-bestand.
fegetexceptflag () prototype
int fegetexceptflag (fexcept_t * flagp, int excepts);
Het argument excepts kan een bitsgewijze OR zijn van de uitzonderingsmacro's met drijvende komma.
fegetexceptflag () Parameters
- flagp: een pointer naar een fexcept_t-object waar de vlaggen zullen worden opgeslagen.
- behalve: Bitmask-lijst met uitzonderingsvlaggen die moeten worden opgehaald.
Macro | Type | Omschrijving |
---|---|---|
FE_DIVBYZERO | Poolfout | Deling door nul |
FE_INEXACT | Inexact | Niet exacte resultaten zoals (1.0 / 3.0) |
FE_INVALID | Domeinfout | Ten minste één van de gebruikte argumenten is een waarde waarvoor de functie niet is gedefinieerd |
FE_OVERFLOW | Fout overloopbereik | Het resultaat is te groot om te worden weergegeven door het retourtype |
FE_UNDERFLOW | Fout onderstroombereik | Het resultaat is te klein om te worden weergegeven door het retourtype |
FE_ALL_EXCEPT | Alle uitzonderingen | Alle uitzonderingen ondersteund door de implementatie |
fegetexceptflag () Retourwaarde
- De functie fegetexceptflag () retourneert nul bij succes, anders niet nul.
Voorbeeld: hoe werkt de functie 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; )
Wanneer u het programma uitvoert, is de uitvoer:
Verhoogde uitzonderingen: FE_DIVBYZERO Verhoogde uitzonderingen: FE_DIVBYZERO FE_INVALID FE_OVERFLOW Verhoogde uitzonderingen: FE_DIVBYZERO