blob: f78ef776b67e7d6fd88a473b5133892377b208bd [file] [log] [blame]
/*=============================================================================
Boost.Wave: A Standard compliant C++ preprocessor library
http://www.boost.org/
Copyright (c) 2001-2012 Hartmut Kaiser. Distributed under the Boost
Software License, Version 1.0. (See accompanying file
LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
=============================================================================*/
// tests whether whitespace is correctly handled in macro arguments
//O --variadics
#define STRINGIZE1(x) #x
#define STRINGIZE(x) STRINGIZE1(x)
#define MACRO(...) (__VA_ARGS__) - STRINGIZE((__VA_ARGS__))
//R #line 20 "t_9_020.cpp"
MACRO() //R () - "()"
MACRO( ) //R () - "()"
MACRO(a) //R (a) - "(a)"
MACRO( a ) //R ( a ) - "( a )"
MACRO( a ) //R ( a ) - "( a )"
MACRO(a,b) //R (a,b) - "(a,b)"
MACRO(a, b) //R (a, b) - "(a, b)"
MACRO(a ,b) //R (a ,b) - "(a ,b)"
MACRO( a ,b, c ) //R ( a ,b, c ) - "( a ,b, c )"
MACRO( a ,b, c ) //R ( a ,b, c ) - "( a ,b, c )"
#undef MACRO
#define MACRO(x) [x]
//R #line 35 "t_9_020.cpp"
MACRO() //R []
MACRO( ) //R []
MACRO(123) //R [123]
MACRO( 123 ) //R [ 123 ]
MACRO( 123 ) //R [ 123 ]
#define A(x) 1 x 3
#define B(x) (1)x(3)
//R #line 45 "t_9_020.cpp"
A(2) //R 1 2 3
STRINGIZE(A(2)) //R "1 2 3"
STRINGIZE(B(2)) //R "(1)2(3)"
STRINGIZE(B( 2 )) //R "(1) 2 (3)"