| /* Test that whitespace in arguments is preserved, and that each |
| newline in macro arguments become a space. */ |
| |
| /* { dg-do run } */ |
| |
| #define f(x, y) "x y" |
| #define g(x) x |
| |
| extern void abort (void); |
| |
| void testquoting () |
| { |
| const char *str1 = f("a", "\"a\""); |
| const char *str2 = f( \t, " \t"); |
| |
| if (strcmp (str1, "\"a\" \"\\\"a\\\"\"")) |
| abort (); |
| if (strcmp (str2, " \t \" \\t\"")) |
| abort (); |
| } |
| |
| int main () |
| { |
| const char *str1 = f( foo ,bar); |
| const char *str2 = f( |
| foo |
| ,bar); |
| |
| if (strcmp (str1, " foo bar")) |
| abort (); |
| |
| if (strcmp (str1, str2)) |
| abort (); |
| |
| /* Verify that quoted state is preserved over a newline. */ |
| if (strcmp (g /* { dg-bogus "unterminated 2" } */ ("1 |
| , 2"), "1 , 2")) |
| abort (); |
| |
| testquoting (); |
| |
| return 0; |
| } |