#define plus(x, y) add(y, x)
#define add(x, y) ((x) + (y))
调用:
plus(plus(a , b), c)
的实际扩展过程如下:
- plus(plus(a, b), c)
- add(c, plus(a, b))
- %%((c) + (plus(a, b)))%%
- %%((c) + (add(b, a)))%%
- %%((c) + (((b) + (a))))%%
标准C不对递归形式(直接或间接)的宏进行重复扩展。否则扩展将无限进行下去,直到系统出错,但有些旧的编译器会这样。
递归形式的宏一般用于覆盖旧的定义。如:
#define char unsigned char
{{tag>C语言}}