File: lexical.cppo

package info (click to toggle)
cppo 1.8.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 588 kB
  • sloc: ml: 2,133; makefile: 54; sh: 11
file content (27 lines) | stat: -rw-r--r-- 874 bytes parent folder | download
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
(* This test shows that the definition of BAR captures the original
   definition of FOO, so even if FOO is redefined, the expansion of
   BAR does not change. *)
#define FOO "original definition"
#define BAR FOO
#undef  FOO
#define FOO "new definition"
FOO (* expands to "new definition" *)
BAR (* expands to "original definition" *)

(* This test shows that a formal parameter can shadow a previously
   defined macro. *)
#define F(FOO) FOO
F(42) (* expands to 42 *)

(* This test shows that two formal parameters can have the same
   name. In that case, the second parameter shadows the first one. *)
#define G(X, X) X+X
G(42,23) (* expands to 23+23 *)

(* This test shows that it is OK to pass an empty argument to a macro
   that expects one parameter. This is interpreted as passing one
   empty argument. *)
#define expect(x) show(x)
expect(42)
expect("23")
expect()