Mercurial > hg > Members > kaito > longjump
view global_longjump.c @ 3:e6aa3b678e4a
remove ret from global_longjump.c
author | Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 12 Nov 2013 15:22:04 +0900 |
parents | dee9711aeb06 |
children | d75a89b10176 |
line wrap: on
line source
#include <stdio.h> #include <setjmp.h> #include <stdlib.h> int retval; __code code1(int n,__code(*__return)(int,void *),void *__enviroment){ printf("code1 : code1 entry\n"); goto __return(n,__enviroment); } __code return1 (int n,void* env){ printf("return1 : __return entry\n"); retval = n; longjmp(*(jmp_buf*)env,1); } int main1 (){ __code (*__return)(); void *__enviroment; printf("main1 : main1 entry\n"); __enviroment = (void*)malloc(sizeof(jmp_buf)); if (setjmp(__enviroment)){ free(__enviroment); printf("main1 : main1 return\n"); return retval; } __return = return1; goto code1(30,__return,__enviroment); return 0; } int main (){ int n; n = main1(); printf("main : return = %d\n",n); return 1; }