Проблема в том, что мне нужно реализовать свой собственный выход (статус) с помощью setjmp и longjmp. Может быть, кто-то может дать несколько указателей?
Мой выход (статус) с setjmp un longjmp
comment
Что вы пробовали?
- person Some programmer dude   schedule 03.11.2012
comment
@JoachimPileborg Я ничего не пробовал, поскольку разрешена только реализация с setjmp / longjmp, и я действительно не могу представить, как создать решение из этих функций. Ну, что я сделал, так это искал реализацию выхода в исходниках ядра, но там было много вещей, которые, вероятно, делают то же самое, но другими методами. (точнее я смотрел на _exit())
- person Jānis Gruzis   schedule 03.11.2012
comment
Вы можете прочитать это: stackoverflow.com/q/1733649/694576
- person alk   schedule 03.11.2012
Ответы (1)
Единственное решение, о котором я сейчас думаю, это вызвать setjmp
в начале main
, а затем создать функцию MyExit
, которая выполняет longjmp
для setjmp
в main
и выполняет return
с некоторым значением (предоставленным из вызова longjmp
).
person
Some programmer dude
schedule
03.11.2012
Это выглядит как правильное решение, я не заметил, что я могу помещать макросы в основную функцию. Вероятно, это место, где я могу поставить setjmp и управлять возвратом в случае возврата. Спасибо.
- person Jānis Gruzis; 03.11.2012
О каких макросах идет речь?
- person Barmar; 03.11.2012
Я знаю, что такое макросы, просто не понимаю, какое это имеет отношение к этому вопросу или ответу.
setjmp()
— это функция (или ее можно рассматривать как таковую).
- person Barmar; 03.11.2012
@Barmar Если вы поместите макросы в начало main (который содержит setjmp и другие конструкции), вы можете вернуться к началу с помощью myExit и вернуть ненулевой код, возвращаемый setjmp. Дело в том, что вначале я думал, что должен делать это без макросов.
- person Jānis Gruzis; 03.11.2012