1 #include <stdio.h> 2 #include <stdlib.h> 3 4 #define YCF_YIELD() 5 6 fun(char x)7int fun(char x){ 8 int y = 10; 9 int i = 0; 10 printf("BEFORE YCF_YIELD()\n"); 11 y = y + x;/*y == 11*/ 12 for (i = 0; i < 100; i++){ 13 printf("ITER %d\n", i); 14 y = y + x; 15 YCF_YIELD(); 16 } 17 printf("AFTER YCF_YIELD()\n");/*y == 111*/ 18 y = y*3; 19 return y;/*y == 333*/ 20 } 21 main(int argc,const char * argv[])22int main( int argc, const char* argv[] ) 23 { 24 #ifdef YCF_YIELD_CODE_GENERATED 25 void* wb = NULL; 26 #endif 27 int ret = 0; 28 #ifdef YCF_YIELD_CODE_GENERATED 29 do{ 30 ret = fun(1,&wb,1); 31 if(wb != NULL){ 32 printf("TRAPPED\n"); 33 } 34 }while(wb != NULL); 35 #else 36 fun(1); 37 #endif 38 printf("RETURNED %d\n", ret); 39 return 0; 40 } 41 42 43