Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  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. */
  12. 1e
  13. 1OK
  14.  
  15. /* These are also "preprocessing numbers", so no expansion */
  16. 123e+OK
  17. .23E+OK
  18. 1.3e-OK
  19. 12.E-OK
  20. 123p+OK
  21. .23P+OK
  22. 1.3p-OK
  23. 12.P-OK
  24. 123..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. */
  30. 123ef+MUST_EXPAND
  31. .23E3-MUST_EXPAND
  32. 1.3e--MUST_EXPAND
  33. 12.E-&MUST_EXPAND
  34. 123p+OK+MUST_EXPAND
  35. .23P+OK;MUST_EXPAND
  36. 1.3p-OK-MUST_EXPAND
  37. 12.P-OK&MUST_EXPAND
  38.