rt_gccstream/gcc/testsuite/gcc.dg/cpp/macro6.c

33 lines
673 B
C

/* { dg-do run } */
/* Test that, when a macro expansion spills into the source file, we
expand macros we suck in from there, as the standard clearly states
they are not nested.
Submitter: Neil Booth, with minor modifications to the originals. 3
Dec 2000.
Source: PR 962 and Thomas Pornin. */
extern void abort (void);
int e = 10, f = 100;
#define e(n) 4 + n
#define X e
#define f(x) x
#define h(x) x + f
int
main ()
{
if (X(X) != 14) /* Should expand to "4 + e". */
abort ();
if (X(X(f)) != 108) /* Should expand to "4 + 4 + f". */
abort ();
if (h(e)(h(e)) != 120) /* Should expand to "e + e + f". */
abort ();
return 0;
}