SA-MP Forums Archive
[Include] TDW CJump - переходы между функциями - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Русский/Russian (https://sampforum.blast.hk/forumdisplay.php?fid=32)
+----- Forum: Релизы/Releases (https://sampforum.blast.hk/forumdisplay.php?fid=66)
+----- Thread: [Include] TDW CJump - переходы между функциями (/showthread.php?tid=639095)



TDW CJump - переходы между функциями - VVWVV - 11.08.2017

TDW CJump
Описание
Добавляет возможность нелокальных переходов. В Pawn есть оператор goto, который позволяет перейти абсолютно в любое место в функции, однако с помощью данного оператора невозможен переход между функциями.
Документация
setjmp - функция, устанавливающая точку возврата. Данная функция записывает все значения из регистров, чтобы при вызове longjmp вернуть всё в исходное положение.
Параметры:
  • env[JmpBuf] - массив для хранения указателей.
  • &retval - ссылка на переменную, в которую будет записано значение из функции longjmp.
longjmp - функция, переходящая на установленную точку: изменяет значения регистров на исходные.
Параметры:
  • env[JmpBuf] - массив для хранения указателей.
  • val - возвращаемое значение.
Пример использования функций:
PHP Code:
new jmp[JmpBuf];
main() {
    new 
ret;
    
setjmp(jmpret);
    if (
ret 10) {
        
somefunc(ret);
    }
}
somefunc(ret)
{
    
printf("%d"ret);
    
longjmp(jmp, ++ret);

Скачать
github
Установка
  1. Перейдите в репозиторий на github (ссылка выше).
  2. Для скачивания на открывшейся странице нажмите на кнопку "Clone or download" (зелёного цвета) и в открывшемся меню - "Download ZIP".
  3. Все файлы библиотеки перемести в папку '/pawno/includes/'.
  4. Скомпилировать изменённые вами скрипты.
Автор: VVWVV
Распространяется по лицензии zlib.



Re: TDW CJump - переходы между функциями - White_116 - 11.08.2017

Новый вид костылей.


Re: TDW CJump - переходы между функциями - VVWVV - 11.08.2017

Quote:
Originally Posted by White_116
View Post
Новый вид костылей.
Старый) Это фича уже давно в Сях же есть.


Re: TDW CJump - переходы между функциями - GuilhermeNunes - 17.08.2017

?? Que lingua estranha й essa??!


Re: TDW CJump - переходы между функциями - Sanya4 - 20.10.2017

У тебя не все регистры сохраняются. Например pri и alt.