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