111
|
1 /* Copyright (C) 2000 Free Software Foundation, Inc. */
|
|
2
|
|
3 /* { dg-do preprocess } */
|
|
4
|
|
5 /* Tests tradcpp0 with defined. The defined operator in traditional C
|
|
6 works just the same as the defined operator in Standard C. */
|
|
7
|
|
8 /* Source: Zack Weinberg, glibc, Neil Booth 11 Dec 2000. */
|
|
9
|
|
10 #if defined REGPARMS
|
|
11 #error REGPARMS should not be defined
|
|
12 #endif
|
|
13
|
|
14 #define REGPARMS 1
|
|
15 #if !defined REGPARMS
|
|
16 #error REGPARMS should be defined
|
|
17 #endif
|
|
18
|
|
19 #define defined /* { dg-error "defined" } */
|
|
20
|
|
21 /* No diagnostics, though you could argue there should be. */
|
|
22 #if defined defined
|
|
23 #error defined is defined!
|
|
24 #endif
|
|
25
|
|
26 #define is_Z_defined defined Z
|
|
27
|
|
28 #if defined Z
|
|
29 #error Z is not defined
|
|
30 #endif
|
|
31
|
|
32 /* The behavior of "defined" when it comes from a macro expansion is
|
|
33 now documented. */
|
|
34 #if is_Z_defined
|
|
35 #error Macro expanding into defined operator test 1
|
|
36 #endif
|
|
37
|
|
38 #define Z
|
|
39
|
|
40 #if !defined Z
|
|
41 #error Z is defined
|
|
42 #endif
|
|
43
|
|
44 #if !is_Z_defined
|
|
45 #error Macro expanding into defined operator test 2
|
|
46 #endif
|
|
47
|
|
48 #undef is_Z_defined
|
|
49 #undef Z
|
|
50
|
|
51 /* Do all the tests over again with the () form of defined. */
|
|
52
|
|
53 /* No diagnostics, though you could argue there should be. */
|
|
54 #if defined(defined)
|
|
55 #error defined is defined!
|
|
56 #endif
|
|
57
|
|
58 #define is_Z_defined defined ( Z )
|
|
59
|
|
60 #if defined(Z)
|
|
61 #error Z is not defined
|
|
62 #endif
|
|
63
|
|
64 /* The behavior of "defined" when it comes from a macro expansion is
|
|
65 now documented. */
|
|
66 #if is_Z_defined
|
|
67 #error Macro expanding into defined operator test 1
|
|
68 #endif
|
|
69
|
|
70 #define Z
|
|
71
|
|
72 #if !defined(Z)
|
|
73 #error Z is defined
|
|
74 #endif
|
|
75
|
|
76 #if !is_Z_defined
|
|
77 #error Macro expanding into defined operator test 2
|
|
78 #endif
|