1  struct st
       2  {
       3    const char *m_filename;
       4    int m_line;
       5    const char *m_function;
       6  };
       7  
       8  extern void debug (struct st *);
       9  
      10  #define TEST_x_1(NAME)							\
      11    do									\
      12      {									\
      13        static struct st NAME = { __FILE__, __LINE__, __func__ };		\
      14        debug (&NAME);							\
      15      }									\
      16    while (0)
      17  
      18  #define TEST_x_10(PREFIX)						\
      19    do									\
      20      {									\
      21        TEST_x_1(PREFIX ## _1);						\
      22        TEST_x_1(PREFIX ## _2);						\
      23        TEST_x_1(PREFIX ## _3);						\
      24        TEST_x_1(PREFIX ## _4);						\
      25        TEST_x_1(PREFIX ## _5);						\
      26        TEST_x_1(PREFIX ## _6);						\
      27        TEST_x_1(PREFIX ## _7);						\
      28        TEST_x_1(PREFIX ## _8);						\
      29        TEST_x_1(PREFIX ## _9);						\
      30        TEST_x_1(PREFIX ## _10);						\
      31      }									\
      32    while(0)
      33  
      34  #define TEST_x_100(PREFIX)						\
      35    do									\
      36      {									\
      37        TEST_x_10(PREFIX ## _1);						\
      38        TEST_x_10(PREFIX ## _2);						\
      39        TEST_x_10(PREFIX ## _3);						\
      40        TEST_x_10(PREFIX ## _4);						\
      41        TEST_x_10(PREFIX ## _5);						\
      42        TEST_x_10(PREFIX ## _6);						\
      43        TEST_x_10(PREFIX ## _7);						\
      44        TEST_x_10(PREFIX ## _8);						\
      45        TEST_x_10(PREFIX ## _9);						\
      46        TEST_x_10(PREFIX ## _10);						\
      47      }									\
      48    while(0)
      49  
      50  #define TEST_x_1000(PREFIX)						\
      51    do									\
      52      {									\
      53        TEST_x_100(PREFIX ## _1);						\
      54        TEST_x_100(PREFIX ## _2);						\
      55        TEST_x_100(PREFIX ## _3);						\
      56        TEST_x_100(PREFIX ## _4);						\
      57        TEST_x_100(PREFIX ## _5);						\
      58        TEST_x_100(PREFIX ## _6);						\
      59        TEST_x_100(PREFIX ## _7);						\
      60        TEST_x_100(PREFIX ## _8);						\
      61        TEST_x_100(PREFIX ## _9);						\
      62        TEST_x_100(PREFIX ## _10);						\
      63      }									\
      64    while(0)
      65  
      66  void test_many (void)
      67  {
      68    TEST_x_1000(s);
      69  }