t_9_020.cpp 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  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 whether whitespace is correctly handled in macro arguments
  9. //O --variadics
  10. #define STRINGIZE1(x) #x
  11. #define STRINGIZE(x) STRINGIZE1(x)
  12. #define MACRO(...) (__VA_ARGS__) - STRINGIZE((__VA_ARGS__))
  13. //R #line 20 "t_9_020.cpp"
  14. MACRO() //R () - "()"
  15. MACRO( ) //R () - "()"
  16. MACRO(a) //R (a) - "(a)"
  17. MACRO( a ) //R ( a ) - "( a )"
  18. MACRO( a ) //R ( a ) - "( a )"
  19. MACRO(a,b) //R (a,b) - "(a,b)"
  20. MACRO(a, b) //R (a, b) - "(a, b)"
  21. MACRO(a ,b) //R (a ,b) - "(a ,b)"
  22. MACRO( a ,b, c ) //R ( a ,b, c ) - "( a ,b, c )"
  23. MACRO( a ,b, c ) //R ( a ,b, c ) - "( a ,b, c )"
  24. #undef MACRO
  25. #define MACRO(x) [x]
  26. //R #line 35 "t_9_020.cpp"
  27. MACRO() //R []
  28. MACRO( ) //R []
  29. MACRO(123) //R [123]
  30. MACRO( 123 ) //R [ 123 ]
  31. MACRO( 123 ) //R [ 123 ]
  32. #define A(x) 1 x 3
  33. #define B(x) (1)x(3)
  34. //R #line 45 "t_9_020.cpp"
  35. A(2) //R 1 2 3
  36. STRINGIZE(A(2)) //R "1 2 3"
  37. STRINGIZE(B(2)) //R "(1)2(3)"
  38. STRINGIZE(B( 2 )) //R "(1) 2 (3)"