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



         

Matherr



     matherr

Функция Процедура обработки ошибок операций с плавающей точкой, модифицируемая пользователем

Синтаксис #include

int matherr(struct exception *e);

Файл, содержащий math.h прототип

Описание Функция matherr вызывается для обработки ошибок, генерируемых функциями из библиотеки математичес- ких функций.

matherr служит в качестве пользовательской ловуш- ки, (функции определяемой пользователем) которую вы можете написать сами (смотрите пример).

matherr сожно использовать для отслеживания оши- бок области определения и выхода за пределы диа- пазона, происходящих в математических функциях. Она не отслеживает исключительных ситуаций, воз- никающих при работе со значениями с плавающей точкой (например при делении на 0). Для отслежи- вания таких ошибок смотри функцию signal.

Вы можете модифицировать процедуру matherr специ- ально для вашего случая (то есть она будет отлав- ливать определенные типы ошибок); модифицирован- ная функция matherr должна возвращать 0, если она не может обработать данную ошибку, и 1, если ошибка успешно обработана. Если функция matherr возвращает ненулевое значение, сообщение об ошиб- ке не печатается, и переменная errno не изменяет- ся.

Ниже приведена структура exception (определенная в файле math.h):

struct exception { int type; char *Function; double arg1, arg2, retval; };

Составные части структуры exception обозначают следующее:

---------T-------------------------------------------------¬ ¦Имя ¦ Что это ¦ +--------+-------------------------------------------------+ ¦type ¦ тип произошедшей математической ошибки; тип enum¦ ¦ ¦ определен в typedef_mexcep (смотрите определение¦ ¦ ¦ после данного списка). ¦ ¦Function¦ указатель на символьную строку с нулевым ¦ ¦ ¦ окончанием, содержащую имя библиотечной ¦ ¦ ¦ математической функции, которая выдала ошибку. ¦ ¦arg1, ¦ аргументы (переданные данной функции), которые ¦ ¦arg2 ¦ вызвали ошибку; если функции передается только ¦ ¦ ¦ один аргумент, он хранится в arg1. ¦ ¦retval ¦ стандартное возвращаемое значение для функции ¦ ¦ ¦ matherr; вы можете модифицировать это значение. ¦ L--------+--------------------------------------------------




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