t_1_004.cpp 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  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. //O --variadics
  9. // Tests macro expansion order in conjunction with the need to skip expansion
  10. // of the same macro as it is currently expanded.
  11. #define CONCAT(a, b) a ## b
  12. #define CONCAT_INDIRECT() CONCAT
  13. //R #line 20 "t_1_004.cpp"
  14. //R CONCAT(1, 2)
  15. CONCAT(CON, CAT)(1, 2)
  16. //R #line 23 "t_1_004.cpp"
  17. //R CONCAT(1, 2)
  18. CONCAT(CON, CAT(1, 2))
  19. //R #line 26 "t_1_004.cpp"
  20. //R 12
  21. CONCAT(CONCAT_, INDIRECT)()(1, 2)
  22. //R #line 29 "t_1_004.cpp"
  23. //R CONCAT(1, 2)
  24. CONCAT(CONCAT_, INDIRECT())(1, 2)
  25. //R #line 32 "t_1_004.cpp"
  26. //R 1 CONCAT(2, 3)
  27. CONCAT(1, CONCAT(2, 3))
  28. //H 10: t_1_004.cpp(15): #define
  29. //H 08: t_1_004.cpp(15): CONCAT(a, b)=a ## b
  30. //H 10: t_1_004.cpp(16): #define
  31. //H 08: t_1_004.cpp(16): CONCAT_INDIRECT()=CONCAT
  32. //H 00: t_1_004.cpp(20): CONCAT(CON, CAT), [t_1_004.cpp(15): CONCAT(a, b)=a ## b]
  33. //H 02: CONCAT
  34. //H 03: CONCAT
  35. //H 00: t_1_004.cpp(23): CONCAT(CON, CAT(1, 2)), [t_1_004.cpp(15): CONCAT(a, b)=a ## b]
  36. //H 02: CONCAT(1, 2)
  37. //H 03: CONCAT(1, 2)
  38. //H 00: t_1_004.cpp(26): CONCAT(CONCAT_, INDIRECT), [t_1_004.cpp(15): CONCAT(a, b)=a ## b]
  39. //H 02: CONCAT_INDIRECT
  40. //H 03: CONCAT_INDIRECT
  41. //H 00: t_1_004.cpp(26): CONCAT_INDIRECT(), [t_1_004.cpp(16): CONCAT_INDIRECT()=CONCAT]
  42. //H 02: CONCAT
  43. //H 03: CONCAT
  44. //H 00: t_1_004.cpp(16): CONCAT(1, 2), [t_1_004.cpp(15): CONCAT(a, b)=a ## b]
  45. //H 02: 12
  46. //H 03: 12
  47. //H 00: t_1_004.cpp(29): CONCAT(CONCAT_, INDIRECT()), [t_1_004.cpp(15): CONCAT(a, b)=a ## b]
  48. //H 02: CONCAT_INDIRECT()
  49. //H 00: t_1_004.cpp(29): CONCAT_INDIRECT(), [t_1_004.cpp(16): CONCAT_INDIRECT()=CONCAT]
  50. //H 02: CONCAT
  51. //H 03: CONCAT
  52. //H 03: CONCAT
  53. //H 00: t_1_004.cpp(32): CONCAT(1, CONCAT(2, 3)), [t_1_004.cpp(15): CONCAT(a, b)=a ## b]
  54. //H 02: 1CONCAT(2, 3)
  55. //H 03: 1CONCAT(2, 3)