1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
/*=============================================================================
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 adjacent tokens are separated by whitespace if the adjacency
// is created by macro expansion
#define A(x) x
//R #line 16 "t_9_010.cpp"
A(1)1 //R 1 1
A(1)X //R 1 X
A(X)1 //R X 1
A(X)X //R X X
#define CAT(a, b) PRIMITIVE_CAT(a, b)
#define PRIMITIVE_CAT(a, b) a ## b
#define X() B
#define ABC 1
//R #line 28 "t_9_010.cpp"
CAT(A, X() C) //R AB C
CAT(A, X()C) //R AB C
//H 10: t_9_010.cpp(13): #define
//H 08: t_9_010.cpp(13): A(x)=x
//H 00: t_9_010.cpp(16): A(1), [t_9_010.cpp(13): A(x)=x]
//H 02: 1
//H 03: 1
//H 00: t_9_010.cpp(17): A(1), [t_9_010.cpp(13): A(x)=x]
//H 02: 1
//H 03: 1
//H 00: t_9_010.cpp(18): A(X), [t_9_010.cpp(13): A(x)=x]
//H 02: X
//H 03: X
//H 00: t_9_010.cpp(19): A(X), [t_9_010.cpp(13): A(x)=x]
//H 02: X
//H 03: X
//H 10: t_9_010.cpp(21): #define
//H 08: t_9_010.cpp(21): CAT(a, b)=PRIMITIVE_CAT(a, b)
//H 10: t_9_010.cpp(22): #define
//H 08: t_9_010.cpp(22): PRIMITIVE_CAT(a, b)=a ## b
//H 10: t_9_010.cpp(24): #define
//H 08: t_9_010.cpp(24): X()=B
//H 10: t_9_010.cpp(25): #define
//H 08: t_9_010.cpp(25): ABC=1
//H 00: t_9_010.cpp(28): CAT(A, X() C), [t_9_010.cpp(21): CAT(a, b)=PRIMITIVE_CAT(a, b)]
//H 00: t_9_010.cpp(28): X(), [t_9_010.cpp(24): X()=B]
//H 02: B
//H 03: B
//H 02: PRIMITIVE_CAT(A, B C)
//H 00: t_9_010.cpp(21): PRIMITIVE_CAT(A, B C), [t_9_010.cpp(22): PRIMITIVE_CAT(a, b)=a ## b]
//H 02: AB C
//H 03: AB C
//H 03: AB C
//H 00: t_9_010.cpp(29): CAT(A, X()C), [t_9_010.cpp(21): CAT(a, b)=PRIMITIVE_CAT(a, b)]
//H 00: t_9_010.cpp(29): X(), [t_9_010.cpp(24): X()=B]
//H 02: B
//H 03: B
//H 02: PRIMITIVE_CAT(A, BC)
//H 00: t_9_010.cpp(21): PRIMITIVE_CAT(A, BC), [t_9_010.cpp(22): PRIMITIVE_CAT(a, b)=a ## b]
//H 02: ABC
//H 03: ABC
//H 03: ABC
|