Re: longjmp
От: wvoquine  
Дата: 25.03.11 08:40
Оценка:
В тесте на gcc под cgwyn деструктор в аналогичной ситуации не вызвался.

А вообще реализовать такое, наверное, не очень трудно. Ведь всё равно нужно знать, на сколько уровней вверх прыгаем... Или как иначе реализуется longjmp в рекурсивной функции?

jmp_buf envs[11];
int done = 0;

void recur(int i)
{
    setjmp(envs[i]);
    std::cout << i << std::endl;
    if ( done )
    {
        return;
    }
    if ( i == 0 )
    {
        done = 1;
        longjmp(envs[5], 5);
    }
    recur(i-1);
    std::cout << i << std::endl;
}


int main(char argc, char* argv[])
{
    recur(10);
    return 0;
}
To be is to be the value of a variable
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.