1  #define P(a,b) P1(a,b)
       2  #define P1(a,b) a##b
       3  
       4  #define ONCE(x, y) (x ?: (x = y()))
       5  #define PREFIX
       6  
       7  extern int P(PREFIX, init) (void);
       8  
       9  int
      10  fun(void)
      11  {
      12    static int memo;
      13    return ONCE(memo, P(PREFIX, init));
      14  }