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()
|