Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 1 odgovor
  • 3.224 pregleda

Najnovija ↓

setjmp i longjmp problem 05.09.2010. u 19:36 · pre 196 meseci #1
Code:

static jmp_buf environment;

void testproc (void)
{
        longjmp(environment, 1);
}

long do_setjmp (void)
{
        return setjmp(environment);
}

long testing (void)
{
    long status;

        status = setjmp(environment);
//      status = do_setjmp();

        if (status == 0) {
            testproc();
            return -1;
        }

        return status;
}


Program pocinje u rutini testing, zove setjmp pa rutinu koja obavezno zove longjmp.

E sad, ako zovem setjmp iz rutine testing, stvar radi. Prvi put, status je nula,
pa se pozove testproc, drugi put je 1, pa vratim status(1).

Ali, ako setjmp uradim sa do_setjmp, kad pozovem testproc i on pozove longjmp,
longjmp se vrati gde treba (u rutinu do_setjmp) ali se onda ta rutina vrati na return -1;
tj iza poziva testproc, a ne na "if (status == 0)"..... zasto?
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme