Russian Belarusian English German Japanese Ukrainian

_fpreset

CuBook05

Функция

Выполняет рестарт математического пакета операций с плавающей точкой.
 
Синтаксис

#include<float.h>
void _fpreset();
 
Прототип

float.h
 
Описание

Функция _fpreset выполняет рестарт математического пакета операций с плавающей точкой. Данная функция обычно используется вместе с функциями signal, system, или функциями exec... или spawn...

Примечание. При работе под операционной системой DOS, если в программе используется математический сопроцессор 80x87, «дочерний» процесс (выполняемый посредством функций system, exec... или spawn...), может изменить состояние операций с плавающей точкой «родительского» процесса.
Если вы используете сопроцессор 80x87, примите следующие предосторожности:
- не вызывайте функции exec..., spawn... или system, пока выражение с плавающей точкой не вычислено.
- для установки операций с плавающей точкой после использования функций system, exec... или spawn... вызывайте функцию _fpreset (если только есть какой-либо шанс выполнения дочерним процессом операций с плавающей точкой, посредством сопроцессора 8087/80287).
 
Возвращаемое значение

Отсутствует.
 
Переносимость

_fpreset уникальна для DOS.
 
Пример

#include<stdio.h>
#include<float.h>
#include<setjmp.h>
#include<signal.h>
#include<process.h>
#include<conio.h>

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)
printf("Возврат после обработки прерывания.\n");
return 0;
}
Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter

Добавить комментарий


Защитный код Обновить