Описание функций Си



         

_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; }




Содержание  Назад  Вперед