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