Home
       0202-variadic.c - scc - simple c99 compiler
  HTML git clone git://git.simple-cc.org/scc
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
   DIR README
   DIR LICENSE
       ---
       0202-variadic.c (601B)
       ---
            1 #define debug1(...)    test1(__VA_ARGS__)
            2 #define debug2(...)    test2(0, #__VA_ARGS__)
            3 #define debug3(t, ...) ((t==1) ? test1(__VA_ARGS__):test2(__VA_ARGS__))
            4 
            5 int
            6 test1(int x, char *s)
            7 {
            8         int i;
            9 
           10         if (x != 3)
           11                 return 0;
           12         for (i = 0; s[i]; i++) {
           13                 if (s[i] != "test1"[i])
           14                         return 0;
           15         }
           16         return 1;
           17 }
           18 
           19 int
           20 test2(int x, char *s)
           21 {
           22         int i;
           23 
           24         for (i = 0; s[i]; i++) {
           25                 if (s[i] != "1, 2"[i])
           26                         return 0;
           27         }
           28         return 1;
           29 }
           30 
           31 int
           32 main()
           33 {
           34         if (!debug1(3, "test1"))
           35                 return 1;
           36         if (!debug2(1, 2))
           37                 return 2;
           38         if (!debug3(1, 3, "test1"))
           39                 return 3;
           40         if (!debug3(2, 0, "1, 2"))
           41                 return 4;
           42 
           43         return 0;
           44 }