File tree Expand file tree Collapse file tree 2 files changed +32
-1
lines changed Expand file tree Collapse file tree 2 files changed +32
-1
lines changed Original file line number Diff line number Diff line change
1
+ // RUN: %clang_cc1 -verify -std=c99 %s
2
+ // RUN: %clang_cc1 -E -std=c99 %s | FileCheck %s
3
+ // expected-no-diagnostics
4
+
5
+ /* WG14 N570: Yes
6
+ * Empty macro arguments
7
+ *
8
+ * NB: the original paper is not available online anywhere, so the test
9
+ * coverage is coming from what could be gleaned from the C99 rationale
10
+ * document. In C89, it was UB to pass no arguments to a function-like macro,
11
+ * and that's now supported in C99.
12
+ */
13
+
14
+ #define TEN 10
15
+ #define U u
16
+ #define I // expands into no preprocessing tokens
17
+ #define L L
18
+ #define glue (a , b ) a ## b
19
+ #define xglue (a , b ) glue(a, b)
20
+
21
+ const unsigned u = xglue (TEN , U );
22
+ const int i = xglue (TEN , I );
23
+ const long l = xglue (TEN , L );
24
+
25
+ // CHECK: const unsigned u = 10u;
26
+ // CHECK-NEXT: const int i = 10;
27
+ // CHECK-NEXT: const long l = 10L;
28
+
29
+ _Static_assert (u == 10U , "" );
30
+ _Static_assert (i == 10 , "" );
31
+ _Static_assert (l == 10L , "" );
Original file line number Diff line number Diff line change @@ -300,7 +300,7 @@ <h2 id="c99">C99 implementation status</h2>
300
300
< tr >
301
301
< td > empty macro arguments</ td >
302
302
< td > N570</ td >
303
- < td class ="unknown " align ="center "> Unknown </ td >
303
+ < td class ="full " align ="center "> Yes </ td >
304
304
</ tr >
305
305
< tr >
306
306
< td > new structure type compatibility (tag compatibility)</ td >
You can’t perform that action at this time.
0 commit comments