C ++ fegetexceptflag () - C ++ standaardbibliotheek

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.
Bitmask geaccepteerde macro's
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

Interessante artikelen...