Функција фегетекцептфлаг () у Ц ++-у добива заставе за изузеће са помичним зарезом наведене у аргументу екцептс и чува је у тачки наведеној флагп-ом.
Функција фетгетекцептфлаг () је дефинисана у датотеци заглавља.
прототип фегетекцептфлаг ()
инт фегетекцептфлаг (фекцепт_т * флагп, инт изузеци);
Изузеци од аргумента могу бити битни ИЛИ макронаредби за изузеће са помичним зарезом.
фегетекцептфлаг () Параметри
- флагп: Показивач на фекцепт_т објекат где ће се заставе чувати.
- изузеци: Битмаск списак заставица за изузеће које треба добити.
Макро | Тип | Опис |
---|---|---|
ФЕ_ДИВБИЗЕРО | Погрешка пола | Дељење са нулом |
ФЕ_ИНЕКСАЦТ | Нетачно | Нису тачни резултати као што је (1.0 / 3.0) |
ФЕ_ИНВАЛИД | Грешка домена | Најмање један коришћени аргумент је вредност за коју функција није дефинисана |
ФЕ_ОВЕРФЛОВ | Грешка у опсегу преливања | Резултат је превелике величине да би га могао представити тип повратка |
ФЕ_УНДЕРФЛОВ | Грешка опсега подлива | Резултат је премале величине да би га могао представити тип повратка |
ФЕ_АЛЛ_ЕКСЦЕПТ | Сви изузеци | Сви изузеци подржани имплементацијом |
фегетекцептфлаг () Повратна вредност
- Функција фегетекцептфлаг () враћа нулу на успех, у супротном није нула.
Пример: Како функционише функција фегетекцептфлаг ()?
#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; )
Када покренете програм, излаз ће бити:
Повећани изузеци: ФЕ_ДИВБИЗЕРО Повећани изузеци: ФЕ_ДИВБИЗЕРО ФЕ_ИНВАЛИД ФЕ_ОВЕРФЛОВ Повећани изузеци: ФЕ_ДИВБИЗЕРО