scc

simple c99 compiler
git clone git://git.simple-cc.org/scc
Log | Files | Refs | README | LICENSE

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 }