1 /*============================================================================= 2 Boost.Wave: A Standard compliant C++ preprocessor library 3 http://www.boost.org/ 4 5 Copyright (c) 2001-2012 Hartmut Kaiser. Distributed under the Boost 6 Software License, Version 1.0. (See accompanying file 7 LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 8 =============================================================================*/ 9 10 // Test macro expansion order 11 #define A(x, y) x,y 12 #define B(x, y) [x][y] 13 #define C(x) B(x) 14 15 //R #line 16 "t_1_001.cpp" 16 C(A(2,3)) //R [2][3] 17 C( A(2 , 3) ) //R [ 2 ][ 3 ] 18 19 //H 10: t_1_001.cpp(11): #define 20 //H 08: t_1_001.cpp(11): A(x, y)=x,y 21 //H 10: t_1_001.cpp(12): #define 22 //H 08: t_1_001.cpp(12): B(x, y)=[x][y] 23 //H 10: t_1_001.cpp(13): #define 24 //H 08: t_1_001.cpp(13): C(x)=B(x) 25 //H 00: t_1_001.cpp(16): C(A(2,3)), [t_1_001.cpp(13): C(x)=B(x)] 26 //H 00: t_1_001.cpp(16): A(2,3), [t_1_001.cpp(11): A(x, y)=x,y] 27 //H 02: 2,3 28 //H 03: 2,3 29 //H 02: B(2,3) 30 //H 00: t_1_001.cpp(13): B(2,3), [t_1_001.cpp(12): B(x, y)=[x][y]] 31 //H 02: [2][3] 32 //H 03: [2][3] 33 //H 03: [2][3] 34 //H 00: t_1_001.cpp(17): C( A(2 , 3) ), [t_1_001.cpp(13): C(x)=B(x)] 35 //H 00: t_1_001.cpp(17): A(2 , 3), [t_1_001.cpp(11): A(x, y)=x,y] 36 //H 02: 2 , 3 37 //H 03: 2 , 3 38 //H 02: B( 2 , 3 ) 39 //H 00: t_1_001.cpp(13): B( 2 , 3 ), [t_1_001.cpp(12): B(x, y)=[x][y]] 40 //H 02: [ 2 ][ 3 ] 41 //H 03: [ 2 ][ 3 ] 42 //H 03: [ 2 ][ 3 ] 43