FE_DFL_ENV
|
Défini dans l'en-tête
<fenv.h>
|
||
|
#define FE_DFL_ENV /*défini par l'implémentation*/
|
(depuis C99) | |
La macro constante FE_DFL_ENV s'étend en une expression de type const fenv_t * , qui pointe vers une copie complète de l'environnement à virgule flottante par défaut, c'est-à-dire l'environnement tel qu'il est chargé au démarrage du programme.
Des macros supplémentaires qui commencent par
FE_
suivies de lettres majuscules, et qui ont le type
const
fenv_t
*
, peuvent être prises en charge par une implémentation.
Exemple
#include <stdio.h> #include <fenv.h> #pragma STDC FENV_ACCESS ON void show_fe_exceptions(void) { printf("current exceptions raised: "); if(fetestexcept(FE_DIVBYZERO)) printf(" FE_DIVBYZERO"); if(fetestexcept(FE_INEXACT)) printf(" FE_INEXACT"); if(fetestexcept(FE_INVALID)) printf(" FE_INVALID"); if(fetestexcept(FE_OVERFLOW)) printf(" FE_OVERFLOW"); if(fetestexcept(FE_UNDERFLOW)) printf(" FE_UNDERFLOW"); if(fetestexcept(FE_ALL_EXCEPT)==0) printf(" none"); printf("\n"); } void show_fe_rounding_method(void) { printf("current rounding method: "); switch (fegetround()) { case FE_TONEAREST: printf ("FE_TONEAREST"); break; case FE_DOWNWARD: printf ("FE_DOWNWARD"); break; case FE_UPWARD: printf ("FE_UPWARD"); break; case FE_TOWARDZERO: printf ("FE_TOWARDZERO"); break; default: printf ("unknown"); }; printf("\n"); } void show_fe_environment(void) { show_fe_exceptions(); show_fe_rounding_method(); } int main() { printf("On startup:\n"); show_fe_environment(); // Change environment fesetround(FE_DOWNWARD); // change rounding mode feraiseexcept(FE_INVALID); // raise exception printf("\nBefore restoration:\n"); show_fe_environment(); fesetenv(FE_DFL_ENV); // restore printf("\nAfter restoring default environment:\n"); show_fe_environment(); }
Sortie :
Au démarrage : exceptions actuelles déclenchées : aucune méthode d'arrondi actuelle : FE_TONEAREST Avant restauration : exceptions actuelles déclenchées : FE_INVALID méthode d'arrondi actuelle : FE_DOWNWARD Après restauration de l'environnement par défaut : exceptions actuelles déclenchées : aucune méthode d'arrondi actuelle : FE_TONEAREST
Références
- Norme C11 (ISO/CEI 9899:2011) :
-
- 7.6/9 Environnement en virgule flottante <fenv.h> (p: 208)
- Norme C99 (ISO/CEI 9899:1999) :
-
- 7.6/8 Environnement en virgule flottante <fenv.h> (p: 188-189)
Voir aussi
|
(C99)
|
sauvegarde ou restaure l'environnement en virgule flottante actuel
(fonction) |
|
(C99)
|
restaure l'environnement en virgule flottante et déclenche les exceptions précédemment levées
(fonction) |
|
Documentation C++
pour
FE_DFL_ENV
|
|