Viewing file: defined.c (1.87 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* Copyright (C) 2000 Free Software Foundation, Inc. */
/* { dg-do preprocess } */
/* Tests behavior of the defined operator. */
/* Source: Neil Booth, 29 Oct 2000, Zack Weinberg 11 Dec 2000. */
#define defined /* { dg-error "defined" } */
/* No diagnostics, though you could argue there should be. */ #if defined defined #error defined is defined! #endif
#define is_Z_defined defined Z
#if defined Z #error Z is not defined #endif
/* The behavior of "defined" when it comes from a macro expansion is now documented. */ #if is_Z_defined /* { dg-error "may not be portable" } */ #error Macro expanding into defined operator test 1 #endif
#define Z
#if !defined Z #error Z is defined #endif
#if !is_Z_defined /* { dg-error "may not be portable" } */ #error Macro expanding into defined operator test 2 #endif
#undef is_Z_defined #undef Z
/* Do all the tests over again with the () form of defined. */
/* No diagnostics, though you could argue there should be. */ #if defined(defined) #error defined is defined! #endif
#define is_Z_defined defined ( Z )
#if defined(Z) #error Z is not defined #endif
/* The behavior of "defined" when it comes from a macro expansion is now documented. */ #if is_Z_defined /* { dg-error "may not be portable" } */ #error Macro expanding into defined operator test 1 #endif
#define Z
#if !defined(Z) #error Z is defined #endif
#if !is_Z_defined /* { dg-error "may not be portable" } */ #error Macro expanding into defined operator test 2 #endif
/* Use of defined in different contexts. */
#define bad1 defined #if !bad1 Z /* { dg-error "may not be portable" } */ #error Z is defined #endif
#if !bad1 (Z) /* { dg-error "may not be portable" } */ #error Z is defined #endif
#define bad2 defined (Z #if !bad2) /* { dg-error "may not be portable" } */ #error Z is defined #endif
|