1 /* Copyright (C) 2002 Free Software Foundation, Inc. */ 2 3 /* { dg-do preprocess } */ 4 5 /* Source: Neil Booth, 26 Feb 2002. 6 7 Test that we allow directives in macro arguments. */ 8 9 /* { dg-do run } */ 10 /* { dg-options "" } */ 11 12 #define f(x) x 13 extern void abort (void); 14 15 int main () 16 { 17 if (f ( 18 #if f(1) /* True. */ 19 0)) /* False. */ 20 #else 21 1)) 22 #endif 23 abort (); 24 25 /* Outer f expands to original definition, f in argument expands 26 to new definition, so result is: if (1 != 2 - 1). */ 27 if (1 != f(2 28 #undef f 29 #define f - 1 30 f)) 31 abort (); 32 33 return 0; 34 } 35