| /* Copyright (C) 2002 Free Software Foundation, Inc. */ |
| |
| /* { dg-do preprocess } */ |
| |
| /* Source: Neil Booth, 26 Feb 2002. |
| |
| Test that we allow directives in macro arguments. */ |
| |
| /* { dg-do run } */ |
| /* { dg-options "" } */ |
| |
| #define f(x) x |
| extern void abort (void); |
| |
| int main () |
| { |
| if (f ( |
| #if f(1) /* True. */ |
| 0)) /* False. */ |
| #else |
| 1)) |
| #endif |
| abort (); |
| |
| /* Outer f expands to original definition, f in argument expands |
| to new definition, so result is: if (1 != 2 - 1). */ |
| if (1 != f(2 |
| #undef f |
| #define f - 1 |
| f)) |
| abort (); |
| |
| return 0; |
| } |