Вход
Наше всё
Теги
codebook
无线电组件
Поиск
Опросы
Закон
Четверг
21 ноября
О смысле всего сущего
0xFF
Средства и методы разработки
Мобильная и беспроводная связь
Блошиный рынок
Объявления
Микроконтроллеры
PLD, FPGA, DSP
AVR
PIC
ARM, RISC-V
Технологии
Кибернетика, автоматика, протоколы
Схемы, платы, компоненты
Микроконтроллеры
944093
Топик полностью
SciFi
(03.09.2019 11:28, просмотров: 627)
ответил
LightElf
на
Это да. Но там еще грабли есть со стеком. Суть, кагбэ, в том, что вообще говоря никто не гарантирует, что выпрыгнув однажды из функции по longjmp можно будет в нее потом запрыгнуть назад. Компилятор имеет полное право раскладывать на стеке свои
Э-э, так нечестно. Если компилятор любит так безобразничать, пусть отслеживает, что вот тут longjmp, отставить безобразия.
ส็็็็็็็็็็็็็็็็็็็็็็็็็༼ ຈل͜ຈ༽ส้้้้้้้้้้้้้้้้้้้้้้้
Ответить
Насколько я помню, setjmp/longjmp не предназначены для впрыгивания "внутрь" (вниз по стеку). Они, кагбэ, предназначены для выпрыгивания из вложенных функций (вверх по стеку). Т.е. если A() вызывает B(), а B() вызывает C(). То из C() выпрыгнуть в
LightElf
(214 знак., 03.09.2019 11:53
)
Если из функции вышли, возвращаться туда не имеет физического смысла, это кагбэ очевидно. Фарш невозможно провернуть назад :-)
-
SciFi
(03.09.2019 11:58
)