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