Viewing file: defined.c (1.54 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* Copyright (C) 2000 Free Software Foundation, Inc. */
/* { dg-do preprocess } */
/* Tests tradcpp0 with defined. The defined operator in traditional C works just the same as the defined operator in Standard C. */
/* Source: Zack Weinberg, glibc, Neil Booth 11 Dec 2000. */
#if defined REGPARMS #error REGPARMS should not be defined #endif
#define REGPARMS 1 #if !defined REGPARMS #error REGPARMS should be defined #endif
#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 #error Macro expanding into defined operator test 1 #endif
#define Z
#if !defined Z #error Z is defined #endif
#if !is_Z_defined #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 #error Macro expanding into defined operator test 1 #endif
#define Z
#if !defined(Z) #error Z is defined #endif
#if !is_Z_defined #error Macro expanding into defined operator test 2 #endif
|