TDW CJump
ÎïèñàíèåÄîáàâëÿåò âîçìîæíîñòü íåëîêàëüíûõ ïåðåõîäîâ.  Pawn åñòü îïåðàòîð goto, êîòîðûé ïîçâîëÿåò ïåðåéòè àáñîëþòíî â ëþáîå ìåñòî â ôóíêöèè, îäíàêî ñ ïîìîùüþ äàííîãî îïåðàòîðà íåâîçìîæåí ïåðåõîä ìåæäó ôóíêöèÿìè.Äîêóìåíòàöèÿ
setjmp - ôóíêöèÿ, óñòàíàâëèâàþùàÿ òî÷êó âîçâðàòà. Äàííàÿ ôóíêöèÿ çàïèñûâàåò âñå çíà÷åíèÿ èç ðåãèñòðîâ, ÷òîáû ïðè âûçîâå longjmp âåðíóòü âñ¸ â èñõîäíîå ïîëîæåíèå.Ñêà÷àòüÏàðàìåòðû:longjmp - ôóíêöèÿ, ïåðåõîäÿùàÿ íà óñòàíîâëåííóþ òî÷êó: èçìåíÿåò çíà÷åíèÿ ðåãèñòðîâ íà èñõîäíûå.
- env[JmpBuf] - ìàññèâ äëÿ õðàíåíèÿ óêàçàòåëåé.
- &retval - ññûëêà íà ïåðåìåííóþ, â êîòîðóþ áóäåò çàïèñàíî çíà÷åíèå èç ôóíêöèè longjmp.
Ïàðàìåòðû:Ïðèìåð èñïîëüçîâàíèÿ ôóíêöèé:
- env[JmpBuf] - ìàññèâ äëÿ õðàíåíèÿ óêàçàòåëåé.
- val - âîçâðàùàåìîå çíà÷åíèå.
PHP Code:
new jmp[JmpBuf];
main() {
new ret;
setjmp(jmp, ret);
if (ret < 10) {
somefunc(ret);
}
}
somefunc(ret)
{
printf("%d", ret);
longjmp(jmp, ++ret);
}
githubÓñòàíîâêà
- Ïåðåéäèòå â ðåïîçèòîðèé íà github (ññûëêà âûøå).
- Äëÿ ñêà÷èâàíèÿ íà îòêðûâøåéñÿ ñòðàíèöå íàæìèòå íà êíîïêó "Clone or download" (çåë¸íîãî öâåòà) è â îòêðûâøåìñÿ ìåíþ - "Download ZIP".
- Âñå ôàéëû áèáëèîòåêè ïåðåìåñòè â ïàïêó '/pawno/includes/'.
- Ñêîìïèëèðîâàòü èçìåí¸ííûå âàìè ñêðèïòû.
Àâòîð: VVWVV
Ðàñïðîñòðàíÿåòñÿ ïî ëèöåíçèè zlib.