Никак не могу решить следующую проблему в EWARM 6.10: есть вычислительная функция double f(double x, double y); внутри которой производятся вычисления с помощью библиотечных функций sqrt, log, exp, pow и т.д. Ввиду того, что x и y меняются в широких пределах, аргументы библиотечных функций могут принимать некорректные значения, например sqrt(-1), возможны переполнения, деление на 0 и т.д. IAR спокойно делит на 0, вычисляет кв.корень из отрицательного числа и не грохается. Но мне при выходе из функции надо знать, что на промежуточных этапах не было такого рода ошибок. Как это сделать стандартными средствами IAR?
Цитата(ANT @ Apr 18 2011, 22:52)

Как это сделать стандартными средствами IAR?
Проверять значение переменной errno нынче не кашерно?
Цитата(Палыч @ Apr 19 2011, 09:35)

Проверять значение переменной errno нынче не кашерно?
Пробовал: Error[Pe020]: identifier "errno" is undefined
Цитата(ANT @ Apr 19 2011, 10:28)

Пробовал: Error[Pe020]: identifier "errno" is undefined
Естественно, Вы предварительно включили <errno.h> и вообще прочитали соответствующее руководство?
Цитата(scifi @ Apr 19 2011, 10:57)

Естественно, Вы предварительно включили <errno.h> и вообще прочитали соответствующее руководство?
Не включил. Насчёт руководства - где искать? Во встроенном хелпе не разжёвано

.
Вот тут можно почитать:
errnoВ двух словах: перед операцией обнуляем errno, а после операции проверяем и интерпретируем: 0 - всё хорошо, EDOM или ERANGE - ошибка.
Цитата(scifi @ Apr 19 2011, 11:16)

Вот тут можно почитать:
errnoВ двух словах: перед операцией обнуляем errno, а после операции проверяем и интерпретируем: 0 - всё хорошо, EDOM или ERANGE - ошибка.
Огромное спасибо! Теперь можно шлифовать вычислительный алгоритм

.