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 13extern void abort (void); 14 15int 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