summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/cpp/trad/cmdlne-C.c
blob: ff67ddbdb7ba4b2fba95b50d879ab039620913b5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/* Copyright (C) 2000 Free Software Foundation, Inc.  */

/* { dg-do preprocess } */
/* { dg-options "-C -traditional-cpp" } */

/* Test -C doesn't fail with #define.  #define is the tricky case,
   being the only directive that remembers its comments.

   -C treats comments as tokens in their own right, so e.g. comment at
   the beginning of a directive turns it into a non-directive.  */

#define simple no comments

#define/**/obj_like/**/(some)/**/thing/**/
#define fun_like(/**/x/**/,/**/y/**/)/**/
/**/#define not_a_macro

#if !defined simple || !defined obj_like || !defined fun_like
#error Missed some macros with -C
#endif

#ifdef not_a_macro
#error not_a_macro is!
#endif

/* Check obj_like doesn't expect arguments, and fun_like does.  */
obj_like
fun_like (foo, bar)

/* Check OK to redefine fun_like without comments in the params.  */
#define fun_like(x, y)/**/

/* Check comments in macros in directives are OK.  */
#define ZERO 0 /* A trailing comment.  */

#if ZERO
#endif