/* Copyright (C) 2000 Free Software Foundation, Inc. */ /* { dg-do run } */ /* { dg-options "-std=c99" } */ /* Fully test the 6 digraphs under c99 assumptions. Four are pasted, to check that digraph pasting works. */ extern int strcmp (const char *, const char *); extern void abort (void); extern int puts (const char *); #define err(str) do { puts(str); abort(); } while (0) %:define glue(x, y) x %:%: y /* #define glue(x, y) x ## y. */ #ifndef glue #error glue not defined! #endif %:define str(x) %:x /* #define str(x) #x */ int main (int argc, char *argv<::>) /* argv[] */ glue (<, %) /* { */ /* di_str[] = */ const char di_str glue(<, :)glue(:, >) = str(%:%:<::><%%>%:); /* Check the glue macro actually pastes, and that the spelling of all digraphs is preserved. */ if (glue(str, cmp) (di_str, "%:%:<::><%%>%:")) err ("Digraph spelling not preserved!"); return 0; glue (%, >) /* } */