Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

_fpreset

_fpreset


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

Синтаксис          #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.
                   
Смотрите также     clear87, _control87, exec...,  spawn...,
                   _status87, system.

Пример:

#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)
     one /* two;
   printf("Возврат после обработки прерывания.\n");
   return 0;
}

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог