Описание тега longjmp

В C и C++ longjmp - это нелокальная функция перехода, которая может перемещаться между функциями.
1 ответ

C: Передача строк по ссылке?

Я написал следующий код для понимания функций setjmp и longjmp, но я думаю, что проблема не связана с этими функциями. Я ожидаю, что результат будет: function1 function2 function2 но я продолжаю получать: function1 function2 function1 как положено. …
3 ответа

Отличные учебники по setjmp/longjmp

Привет, я хотел бы прочитать хорошие учебники по setjmp/longjmp на языке C. Было бы лучше, если бы были примеры, которые являются реальными, а не искусственными. Благодарю.
14 ноя '09 в 08:05
2 ответа

Реализация setjmp и longjmp в C без встроенных функций или сборки (получение неправильных возвращаемых значений)

Я пытаюсь проверить 2 из моих функций, которые имитируют setjmp и longjmp для домашней работы - что довольно сложно, поскольку нам не разрешено использовать встроенные функции или ассемблер asm () для реализации функций longjmp и setjmp. (Да, это де…
30 май '17 в 23:37
3 ответа

Как сделать lua_pushstring и избежать исключения setjmp из нехватки памяти

Иногда я хочу использовать lua_pushstring местами после того, как я выделил некоторые ресурсы, которые мне нужно будет очистить в случае сбоя. Однако, как видно из документации, функции lua_push * всегда могут привести к исключению нехватки памяти. …
21 апр '12 в 22:30
1 ответ

setjmp, longjump и реконструкция стека

Обычно setjmp и longjmp не заботятся о стеке вызовов - вместо этого функции просто сохраняют и восстанавливают регистры. Я хотел бы использовать setjmp и longjmp, чтобы стек вызовов был сохранен, а затем восстановлен в другом контексте выполнения En…
28 окт '16 в 17:03
2 ответа

C макросами с открывающими и закрывающими тегами?

Я только начал читать эту статью об обработке исключений в c с использованием setjmp( jmp_buf) и longjmp( jmp_buf, int). Поэтому я в основном строю связанный список, который использует локальные переменные типа xRecord и связывает его со списком. (П…
09 сен '12 в 14:51
2 ответа

Обработка исключений в C - делает попытку поймать работу над функциями

Я пишу библиотеку обработки исключений в C, и я столкнулся с ударом: #define TRY do{ jmp_buf ex_buf__; switch( setjmp(ex_buf__) ){ case 0: #define FINALLY break; } default: #define CATCH(x) break; case x: #define ETRY } }while(0) #define THROW(x) lo…
28 фев '14 в 13:03
0 ответов

Как среда сохраняется с помощью setjmp и восстанавливается с помощью longjmp?

Вот мой экспериментальный код: #include <setjmp.h> #include <stdio.h> static jmp_buf buf; int main() { volatile int b = 3; if (setjmp(buf) != 0) { printf("%d\n", b); return 0; } b = 5; longjmp(buf, 1); } Мое понимание setjmp а также long…
17 авг '14 в 00:22
2 ответа

Есть ли в java вид setjmp/longjmp?

Я признаю, что если это возможно, это будет открытой дверью для плохого, очень плохого кода... Но в некоторых конкретных случаях... Итак, вопрос в том, существует ли какой-либо эквивалент c setjmp / longjmp? Я хотел бы реализовать Python-подобный ге…
26 дек '15 в 10:55
0 ответов

Портирование sigsetjmp / sigjmp_buf (в C) на windows

Есть ли чистый способ (желательно совместимый с mingw64) портировать sigsetjmp / sigjmp_buf в windows?
22 май '16 в 03:49
2 ответа

Обнаруживать рекурсию надежно даже при наличии нелокальных скачков

У меня есть определенная функция (обработчик сигнала), для которой я хотел бы обнаружить рекурсию, то есть выяснить, вызывала ли функция прямо или косвенно себя. Сложность в том, что функция вызывает некоторый код, который не находится под ее контро…
05 июн '13 в 04:28
1 ответ

Реинверсия управления с использованием longjmp

Я пытаюсь реализовать реинверсию управления в c с помощью longjmp, в настоящее время у меня есть этот код: #include <stdio.h> #include <setjmp.h> jmp_buf env; int arg; typedef void (*fptr)(int); fptr callback; void cb(int a) { arg = a; l…
5 ответов

Многозадачность с использованием setjmp, longjmp

Есть ли способ реализовать многозадачность, используя setjmp а также longjmp функции
01 апр '10 в 13:50
2 ответа

Ограничить время выполнения функции в с

Я хотел бы ограничить выполнение функции в чистом C, не останавливая всю программу. Я полагаю, что самым близким моментом на stackru.com было последнее замечание в этой теме: как ограничить время выполнения функции в C/POSIX? Был некоторый разговор …
30 июл '15 в 10:08
1 ответ

Мой выход (статус) с помощью setjmp un longjmp

Проблема в том, что я должен реализовать свой собственный выход (статус) с помощью setjmp и longjmp. Может быть, кто-то может дать некоторые советы?
03 ноя '12 в 15:54
3 ответа

Есть ли проблемы с производительностью при нелокальных переходах?

Я использую нелокальные прыжки (setjmp, longjmp). Я хотел бы знать, может ли это быть проблемой для выступлений. Есть ли setjmp сохранить весь стек или просто несколько указателей? Благодарю.
28 апр '12 в 13:04
1 ответ

C++11 лямбда-захваченных с помощью ссылки тривиально разрушаемы

Я хотел бы знать, если следующие утечки памяти или нет (указано в стандарте) ... jmp_buf env; if(setjmp(env) == 0) { auto lambda = [&] () { ... longjmp(env, 1); }; lambda(); } что сводится к тому, имеют ли лямбды, захватывающие ссылки, тривиальн…
28 апр '15 в 09:32
4 ответа

Предупреждение "может быть забит" на объекте C++ с помощью setjmp

#include #include int main (int argc, char **) { std:: vector foo (argc); jmp_buf env; if (setjmp (env)) возвращает 1; } Компиляция приведенного выше кода с GCC 4.4.1, g++ test.cc -Wextra -O1, выдает это сбивающее с толку предупреждение: /usr/includ…
08 янв '10 в 01:46
5 ответов

Чем C++ try/catch отличается от C setjmp/longjmp?

Я знал об обработке исключений в C++ с использованием try а также catch блоки. Я задавался вопросом, была ли эта функциональность там в C, Итак, теперь я знаю, что основная обработка ошибок в C сделано setjmp/longjmp, поскольку setjmp/longjmp нет в …
16 фев '13 в 20:16
1 ответ

Безопасное использование longjmp/setjmp с volatile

Я рассматриваю использовать макрос TRY/CATCH на основе setjmp/longjmp для обработки ошибок. В противном случае некоторые из моих довольно структурированных функций будут взорваны уродливыми операторами if и флагами цикла. Код похож на этот пример: i…
12 сен '16 в 07:49