28 lines
874 B
Text
28 lines
874 B
Text
|
|
(* 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()
|