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. */
121e
131OK
14
15/* These are also "preprocessing numbers", so no expansion */
16123e+OK
17.23E+OK
181.3e-OK
1912.E-OK
20123p+OK
21.23P+OK
221.3p-OK
2312.P-OK
24123..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. */
30123ef+MUST_EXPAND
31.23E3-MUST_EXPAND
321.3e--MUST_EXPAND
3312.E-&MUST_EXPAND
34123p+OK+MUST_EXPAND
35.23P+OK;MUST_EXPAND
361.3p-OK-MUST_EXPAND
3712.P-OK&MUST_EXPAND
38