1 #define e THIS_SHOULD_NOT_BE_EXPANDED
2 #define E NOR_THIS
3 #define p NOT_THIS_EITHER
4 #define P AND_SURELY_NOT_THIS
5 #define OK CRAZY_BUT_TRUE_THIS_NEITHER
6 
7 /* This one is actually meant to be expanded */
8 #define MUST_EXPAND GO
9 
10 /* The following are "preprocessing numbers" and should not trigger macro
11  * expansion. */
12 1e
13 1OK
14 
15 /* These are also "preprocessing numbers", so no expansion */
16 123e+OK
17 .23E+OK
18 1.3e-OK
19 12.E-OK
20 123p+OK
21 .23P+OK
22 1.3p-OK
23 12.P-OK
24 123..OK
25 .23.OK.OK
26 
27 /* Importantly, just before the MUST_EXPAND in each of these, the preceding
28  * "preprocessing number" ends and we have an actual expression. So the
29  * MUST_EXPAND macro must be expanded (who would have though?) in each case. */
30 123ef+MUST_EXPAND
31 .23E3-MUST_EXPAND
32 1.3e--MUST_EXPAND
33 12.E-&MUST_EXPAND
34 123p+OK+MUST_EXPAND
35 .23P+OK;MUST_EXPAND
36 1.3p-OK-MUST_EXPAND
37 12.P-OK&MUST_EXPAND
38