101e04c3fSmrg#define e THIS_SHOULD_NOT_BE_EXPANDED
201e04c3fSmrg#define E NOR_THIS
301e04c3fSmrg#define p NOT_THIS_EITHER
401e04c3fSmrg#define P AND_SURELY_NOT_THIS
501e04c3fSmrg#define OK CRAZY_BUT_TRUE_THIS_NEITHER
601e04c3fSmrg
701e04c3fSmrg/* This one is actually meant to be expanded */
801e04c3fSmrg#define MUST_EXPAND GO
901e04c3fSmrg
1001e04c3fSmrg/* The following are "preprocessing numbers" and should not trigger macro
1101e04c3fSmrg * expansion. */
1201e04c3fSmrg1e
1301e04c3fSmrg1OK
1401e04c3fSmrg
1501e04c3fSmrg/* These are also "preprocessing numbers", so no expansion */
1601e04c3fSmrg123e+OK
1701e04c3fSmrg.23E+OK
1801e04c3fSmrg1.3e-OK
1901e04c3fSmrg12.E-OK
2001e04c3fSmrg123p+OK
2101e04c3fSmrg.23P+OK
2201e04c3fSmrg1.3p-OK
2301e04c3fSmrg12.P-OK
2401e04c3fSmrg123..OK
2501e04c3fSmrg.23.OK.OK
2601e04c3fSmrg
2701e04c3fSmrg/* Importantly, just before the MUST_EXPAND in each of these, the preceding
2801e04c3fSmrg * "preprocessing number" ends and we have an actual expression. So the
2901e04c3fSmrg * MUST_EXPAND macro must be expanded (who would have though?) in each case. */
3001e04c3fSmrg123ef+MUST_EXPAND
3101e04c3fSmrg.23E3-MUST_EXPAND
3201e04c3fSmrg1.3e--MUST_EXPAND
3301e04c3fSmrg12.E-&MUST_EXPAND
3401e04c3fSmrg123p+OK+MUST_EXPAND
3501e04c3fSmrg.23P+OK;MUST_EXPAND
3601e04c3fSmrg1.3p-OK-MUST_EXPAND
3701e04c3fSmrg12.P-OK&MUST_EXPAND
38