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