Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 10 декабря!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

ПРОГРАММИРОВАНИЕ НА C и С++



Программисты долго мучаются с кодом прогаммы, изучают С++, WinAPI функции, MSDN. Потом пишут банальную систему защиты или навешивают банальный протектор, а крэкеры и реверсеры справляются с такой защитой за 5 минут. В итоге, продажи программы почти нулевые. Чтобы такого не допустить, тут самому надо немного поднабрать опыта отладки, реверсинга, тот же отладчик Ollydbg изучить или дизассемблер IDA Pro. Но где искать по крохам эти знания? Нет, конечно можно годами "методом тыка" разбираться, но куда быстрее видеокурс специальный посмотреть. Вот тут он есть: ссылка. Автор курса с большим опытом и объясняет понятно, я из этого курса много узнал про то как работает компьютер, процессор, про инструменты специальные и как с ними работать. Мои коллеги программисты на работе ничего такого и не знают, теперь я им нос утру.

Символическая | Математическая ошибка

 
  константа      |
 
 ----------------+----------------------------------------------------
 
  DOMAIN         | аргумент не находится в области определения функции
 
                 | (например log(-1));
 
  SING           | аргументы дают ошибку в сингулярности (например
 
                 | pow(0,-2));
 
  OVERFLOW       | аргумент приводит к результату, превышающему
 
                 | MAXDOUBLE (например exp(1000));
 
  UNDERFLOW      | аргумент приводит к результату, меньшему
 
                 | MINDOUBLE (например exp(-1000));
 
  TLOSS          | аргументы дают результат с потерей значащих цифр
 
                 | например sin(10e70)).
 
 ---------------------------------------------------------------------
 
 
 
                    Символические константы   MAXDOUBLE   и  MINDOUBLE
 
                    определены в файле values.h.
 
 
 
                    Исходный код для функции matherr,  определенной по
 
                    умолчанию  находится  на  дистрибутивных  дисках с
 
                    системой Borland C++.
 
 
 
                    Стандарт UNIX  функции  matherr   несовместим   со
 
                    стандартом  ANSI  C.  Если  вам  требуется  версия
 
                    функции  matherr  для  системы  UNIX,  пользуйтесь
 
                    программой      matherr.c,     поставляемой     на
 
                    дистрибутивных дискетах пакета Borland C++.
 
 
 
 Возвращаемое       По умолчанию функция matherr возвращает 1 если
 
 значение           ошибка UNDERFLOW или TLOSS, иначе  0. Функция
 
                    matherr также   может   модифицировать    параметр
 
                    e->retval,  который  посредством  функции  matherr
 
                    передается в вызывающую программу.
 
 
 
                    Когда функция matherr возвращает  0,  (означающий,
 
                    что  обработать  ошибку  она  не  может),  функция
 
                    _matherr устанавливает переменную errno и печатает
 
                    сообщение   об   ошибке.
 
 
 
                    Когда функция    matherr    возвращает   ненулевое
 
                    значение,   (означающее,   что   ошибка    успешно
 
                    обработана),   глобальная   переменная   errno  не
 
                    устанавливается   и   сообщение   об   ошибке   не
 
                    выводится.
 
 
 
 Переносимость      matherr доступна на многих компиляторах С,  однако
 
                    она не поддерживается стандартом ANSI C. matherr в
 
                    стиле системы UNIX (которая печатает  сообшение  и
 
                    завершает   выполнение   программы)   поставляется
 
                    вместе с пакетом Borland C++  в  файле  MATHERR.C.
 
                    matherr   может  не  поддерживаться  в  дальнейших
 
                    версиях Borland C++.
 
 
 
 Пример:
 
 
 
 #include<math.h>
 
 #include<stdio.h>
 
 #include<string.h>
 
 
 
 int matherr(struct exception *a);
 
 {
 
    if (a -> type == DOMAIN)
 
    {
 
       if(strcmp(a -> name, "sqrt") == 0)
 
       {
 
          a -> retval = sqrt (-(a -> arg1));
 
          return (1);
 
    }
 
 }
 
 return (0);
 
 }
 
 
 
 int main(void)
 
 {
 
    double x,y;
 
    x = -2.0;
 
    y = sqrt(x);
 
    printf("Значение, скорректированное matherr: %lf\n",y);
 
    return 0;
 
 }


<< ВЕРНУТЬСЯ В ПОДРАЗДЕЛ

<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ




Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS