1extern void abort (void); 2extern void exit (int); 3 4#ifndef NO_TRAMPOLINES 5static void recursive (int n, void (*proc) (void)) 6{ 7 __label__ l1; 8 9 void do_goto (void) 10 { 11 goto l1; 12 } 13 14 if (n == 3) 15 recursive (n - 1, do_goto); 16 else if (n > 0) 17 recursive (n - 1, proc); 18 else 19 (*proc) (); 20 return; 21 22l1: 23 if (n == 3) 24 exit (0); 25 else 26 abort (); 27} 28 29int main () 30{ 31 recursive (10, abort); 32 abort (); 33} 34#else 35int main () { return 0; } 36#endif 37