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 fun(void)10 fun(void) 11 { 12 static int memo; 13 return ONCE(memo, P(PREFIX, init)); 14 } 15