vak: (Бодхидхарма)
[personal profile] vak
Пока Дейкстра ругался на оператор goto (1968), Martin Richards изобрёл (в языке BCPL, 1967) механизм нелокальных переходов longjmp. Кен Томпсон и Деннис Ритчи встроили это дело сначала в язык Би, потом в Си. Идея прижилась, позже превратившись в try/catch в Си++.

Нелокальные переходы штука полезная в умелых руках. Иногда без неё не обойтись. Там есть куча подводных камней. Мне когда-то приходилось реализовывать setjmp/longjmp на разных архитектурах. Уже подзабылось маленько. Может кто и описал это дело в книжках, но где ж те книжки отыщешь. Благо имеем ИИ, можно спросить.

Вот статья с хорошим изложением темы от Клода: "Non-Local Jumps in C: Understanding setjmp and longjmp"

Целевая аудитория: программисты на C, знакомые с функциями, указателями и стеком вызовов, но ещё не сталкивавшиеся с нелокальным управлением потоком выполнения.

Цель: сформировать чёткое представление о том, как работают setjmp/longjmp, когда их следует использовать и — что не менее важно — когда их следует избегать.
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

If you are unable to use this captcha for any reason, please contact us by email at support@dreamwidth.org