25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.
 
 
 
 

45 satır
697 B

#include <stdio.h>
#include <setjmp.h>
enum jb_t {
j_function,
j_loop,
j_switch,
};
struct jb_record
{
jmp_buf jb;
enum jb_t type;
oop result;
struct jb_record next;
};
struct jb_record *jbs= 0;
int eval(oop ast)
{
case t_call: {
pushJbRec();
if (0 != set_jmp(jbs->jb)) {
oop result = jbs->result;
popJbRec();
return result;
}
// run the body of the function here
result = (each statement in the func body...);
popJbRec();
return result;
}
setjmp(jb);
if (n < 2) return 1;
return 1 + f(n-1) + f(n-2);
}
int main()
{
printf("%zi\n", sizeof(jmp_buf));
printf("%i\n", f(5));
}