/* { dg-do run } */ /* { dg-options "-std=c99" } */ /* First two tests sourced from a bug report of Thomas Pornin. Varargs test source Jamie Lokier. All adapted for the testsuite by Neil Booth, Oct 2000. */ /* Tests various macro abuse is correctly expanded. */ static int d = 4; #define c(x) d #define d(x) c(2) #if 0 /* This macro chain above sucks up the whole file once it starts, so I've commented it out. The example is left for idle amusement :-) */ #define a(x) b( #define b(x) a( #endif #define apply(...) apply2 (__VA_ARGS__) #define half(x) ((x) / 2) #define apply2(f,x) f (x) extern void abort (void); extern void exit (int); int main() { /* Expands to c(2) then d. */ if (c(c)(c) != 4) abort (); if (apply (half, 200) != 100) abort (); exit (0); }