0086-variadic.c (501B)
1 #define CALL(FUN, ...) FUN(__VA_ARGS__) 2 3 int 4 none() 5 { 6 return 0; 7 } 8 9 int 10 one(int a) 11 { 12 if (a != 1) 13 return 1; 14 15 return 0; 16 } 17 18 int 19 two(int a, int b) 20 { 21 if (a != 1) 22 return 1; 23 if (b != 2) 24 return 1; 25 26 return 0; 27 } 28 29 int 30 three(int a, int b, int c) 31 { 32 if (a != 1) 33 return 1; 34 if (b != 2) 35 return 1; 36 if (c != 3) 37 return 1; 38 39 return 0; 40 } 41 42 int 43 main() 44 { 45 if (CALL(none)) 46 return 1; 47 if (CALL(one, 1)) 48 return 2; 49 if (CALL(two, 1, 2)) 50 return 3; 51 if (CALL(three, 1, 2, 3)) 52 return 4; 53 54 return 0; 55 }