_Fpreset
_fpreset
Функция Выполняет рестарт математического пакета операций с плавающей точкой.
Синтаксис #include
void _fpreset();
Файл, содержащий float.h прототип
Описание Функция _fpreset выполняет рестарт математического пакета операций с плавающей точкой. Данная функ- ция обычно используется вместе с функциями signal, system, или функциями exec... или spawn...
Примечание. При работе под операционной системой DOS, если в программе используется математический сопроцессор 80x87, "дочерний" процесс (выполняе- мый посредством функций system, exec... или spawn...), может изменить состояние операций с плавающей точкой "родительского" процесса.
Если вы используете сопроцессор 80x87, примите следующие предосторожности:
- Не вызывайте функции exec..., spawn... или system, пока выражение с плавающей точкой не вы- числено.
- Для установки операций с плавающей точкой после использования функций system, exec... или spawn... вызывайте функцию _fpreset (если только есть какой-либо шанс выполнения дочерним процес- сом операций с плавающей точкой, посредством соп- роцессора 8087/80287).
Возвращаемое Отсутствует. значение
Смотрите также 7, 7, .., .., 7,
Пример:
#include
#include
#include
#include
#include
#include
jmp_buf reenter;
/* определим программу обработки ошибочных ситуаций операций с плавающей точкой */ void float_trap(int sig) { printf("Прерывание по ошибке операций с плавающей точкой.\n"); printf("Для продолжения работы нажмите любую клавишу...\n"); getch(); /* рестарт сопроцессора или эмулятора */ _fpreset(); /* вернутся в точку, в которой возникла ошибка */ longjmp(reenter,-1); } int main(void) { float one = 3.14, two = 0.0; /* установить программу обработки исключительных ситуаций операций с плавающей точкой */ if(signal(SIGFPE,float_trap) == SIG_ERR) { printf("Ошибка при установке программы обработки прерываний\n"); exit(3); } printf("Генерация математической ошибки. Нажмите клавишу...\n"); getch(); if(setjmp(reenter)==0) one /* two; printf("Возврат после обработки прерывания.\n"); return 0; }