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