t_1_003.cpp 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. /*=============================================================================
  2. Boost.Wave: A Standard compliant C++ preprocessor library
  3. http://www.boost.org/
  4. Copyright (c) 2001-2012 Hartmut Kaiser. Distributed under the Boost
  5. Software License, Version 1.0. (See accompanying file
  6. LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  7. =============================================================================*/
  8. // Tests macro expansion order in conjunction with the need to skip expansion
  9. // of the same macro as it is currently expanded.
  10. #define CONCAT(a, b) a ## b
  11. #define CONCAT_INDIRECT() CONCAT
  12. //R #line 18 "t_1_003.cpp"
  13. //R CONCAT(1, 2)
  14. CONCAT(CON, CAT)(1, 2)
  15. //R #line 21 "t_1_003.cpp"
  16. //R CONCAT(1, 2)
  17. CONCAT(CON, CAT(1, 2))
  18. //R #line 24 "t_1_003.cpp"
  19. //R 12
  20. CONCAT(CONCAT_, INDIRECT)()(1, 2)
  21. //R #line 27 "t_1_003.cpp"
  22. //R CONCAT(1, 2)
  23. CONCAT(CONCAT_, INDIRECT())(1, 2)
  24. //R #line 31 "t_1_003.cpp"
  25. //R 1 CONCAT(2, 3)
  26. CONCAT(1, CONCAT(2, 3))
  27. //H 10: t_1_003.cpp(13): #define
  28. //H 08: t_1_003.cpp(13): CONCAT(a, b)=a ## b
  29. //H 10: t_1_003.cpp(14): #define
  30. //H 08: t_1_003.cpp(14): CONCAT_INDIRECT()=CONCAT
  31. //H 00: t_1_003.cpp(18): CONCAT(CON, CAT), [t_1_003.cpp(13): CONCAT(a, b)=a ## b]
  32. //H 02: CONCAT
  33. //H 03: CONCAT
  34. //H 00: t_1_003.cpp(21): CONCAT(CON, CAT(1, 2)), [t_1_003.cpp(13): CONCAT(a, b)=a ## b]
  35. //H 02: CONCAT(1, 2)
  36. //H 03: CONCAT(1, 2)
  37. //H 00: t_1_003.cpp(24): CONCAT(CONCAT_, INDIRECT), [t_1_003.cpp(13): CONCAT(a, b)=a ## b]
  38. //H 02: CONCAT_INDIRECT
  39. //H 03: CONCAT_INDIRECT
  40. //H 00: t_1_003.cpp(24): CONCAT_INDIRECT(), [t_1_003.cpp(14): CONCAT_INDIRECT()=CONCAT]
  41. //H 02: CONCAT
  42. //H 03: CONCAT
  43. //H 00: t_1_003.cpp(14): CONCAT(1, 2), [t_1_003.cpp(13): CONCAT(a, b)=a ## b]
  44. //H 02: 12
  45. //H 03: 12
  46. //H 00: t_1_003.cpp(27): CONCAT(CONCAT_, INDIRECT()), [t_1_003.cpp(13): CONCAT(a, b)=a ## b]
  47. //H 02: CONCAT_INDIRECT()
  48. //H 00: t_1_003.cpp(27): CONCAT_INDIRECT(), [t_1_003.cpp(14): CONCAT_INDIRECT()=CONCAT]
  49. //H 02: CONCAT
  50. //H 03: CONCAT
  51. //H 03: CONCAT
  52. //H 00: t_1_003.cpp(31): CONCAT(1, CONCAT(2, 3)), [t_1_003.cpp(13): CONCAT(a, b)=a ## b]
  53. //H 02: 1CONCAT(2, 3)
  54. //H 03: 1CONCAT(2, 3)