1 #ifndef NO_LABEL_VALUES try(int num)2int try (int num) { 3 __label__ lab1, lab2, lab3, lab4, lab5, lab6, default_lab; 4 5 void *do_switch (int num) { 6 switch(num) { 7 case 1: 8 return &&lab1; 9 case 2: 10 return &&lab2; 11 case 3: 12 return &&lab3; 13 case 4: 14 return &&lab4; 15 case 5: 16 return &&lab5; 17 case 6: 18 return &&lab6; 19 default: 20 return &&default_lab; 21 } 22 } 23 24 goto *do_switch (num); 25 26 lab1: 27 return 1; 28 29 lab2: 30 return 2; 31 32 lab3: 33 return 3; 34 35 lab4: 36 return 4; 37 38 lab5: 39 return 5; 40 41 lab6: 42 return 6; 43 44 default_lab: 45 return -1; 46 } 47 main()48main() 49 { 50 int i; 51 for (i = 1; i <= 6; i++) 52 { 53 if (try (i) != i) 54 abort(); 55 } 56 exit(0); 57 } 58 #else main()59main(){ exit (0); } 60 #endif 61