| #define e THIS_SHOULD_NOT_BE_EXPANDED |
| #define E NOR_THIS |
| #define p NOT_THIS_EITHER |
| #define P AND_SURELY_NOT_THIS |
| #define OK CRAZY_BUT_TRUE_THIS_NEITHER |
| |
| /* This one is actually meant to be expanded */ |
| #define MUST_EXPAND GO |
| |
| /* The following are "preprocessing numbers" and should not trigger macro |
| * expansion. */ |
| 1e |
| 1OK |
| |
| /* These are also "preprocessing numbers", so no expansion */ |
| 123e+OK |
| .23E+OK |
| 1.3e-OK |
| 12.E-OK |
| 123p+OK |
| .23P+OK |
| 1.3p-OK |
| 12.P-OK |
| 123..OK |
| .23.OK.OK |
| |
| /* Importantly, just before the MUST_EXPAND in each of these, the preceding |
| * "preprocessing number" ends and we have an actual expression. So the |
| * MUST_EXPAND macro must be expanded (who would have though?) in each case. */ |
| 123ef+MUST_EXPAND |
| .23E3-MUST_EXPAND |
| 1.3e--MUST_EXPAND |
| 12.E-&MUST_EXPAND |
| 123p+OK+MUST_EXPAND |
| .23P+OK;MUST_EXPAND |
| 1.3p-OK-MUST_EXPAND |
| 12.P-OK&MUST_EXPAND |