Я должен использовать C для одного проекта, и я думаю об использовании longjmp/setjmp для обработки ошибок, поскольку я думаю, что будет намного легче обработать ошибку в одном центральном месте, чем коды возврата. Я был бы...
Привет я хотел бы прочитать хорошие учебные руководства на setjmp/longjmp в C. Было бы лучше, если существуют примеры, которые реальны, а не искусственны.Спасибо.
Я хочу использовать setjmp()/longjmp() для реализации системы корутин. Затем я решил написать небольшой .c файл, чтобы протестировать его. В MinGW все в порядке; я получил желаемый результат.
Но когда я компилирую его в MSVC++, ...
После вызова longjmp () к локальным объектам с энергонезависимой памятью нельзя обращаться, если их значения могли измениться с момента вызова setjmp (). Их значение в этом случае считается ...
Я исследовал setjmp / longjmp и обнаружил, что setjmp сохраняет регистры, такие как указатель команд, указатель стека и т. Д ... Однако что я не могу понять, что данные в стеке ...
Следующий код: Работает нормально при компиляции с gcc версии 4.4.5 (Ubuntu / Linaro 4.4.4-14ubuntu5 / 32bits)
Работает нормально при компиляции с MSVC10 (Win7 / 32bits)
Сбой при работе с gcc версии 4.5 ....
Обычно я не кодирую C ++, но мой странный друг-компьютерщик устал от просмотра моих замечательных программ FORTRAN и попросил меня переписать одну из них на C ++, так как ему больше нравятся мои коды C ++ ....
Я хотел бы использовать setjmp и longjmp в программе C, которая связывается с библиотекой, реализованной на C ++ (но имеющей C API). Код C ++ выполняет динамическое выделение памяти и передаются указатели ...
Я знаю определение setjmp и longjmp. setjmp сохраняет среду в контексте стека, а другой восстанавливает. Но я думаю, что с моей стороны где-то есть непонимание. Могу ...
Я пытался отследить периодически возникающую ошибку сбоя в моем коде (которая использует setjmp) и сузил ее до: появляется при компиляции с / O2 уходит с / O2 / Oy-, т.е. отображается только с ...