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