c语言中宏定义的嵌套和递归

在看我姐姐的C程序设计那本书的时候,看到预处理命令中的宏定义那一块,她写了一条笔记“宏定义可嵌套不可递归”,这句话是什么意思?能详细说明一下么?
最好再举出例子

可以嵌套:#define a bb(不能是aa)
#define bb 123
预编译时a会变为123
不可递归:#define c 1+c
或#define c 1+b
#define b 1+c
预编译时c会变成1+1+1+1+1+......无限循环
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-02-22
就是宏里边可以嵌套宏例如:
#ifdef AA
……
#ifdef BB
……
#endif
……
#endif
递归?谁会拿宏来递归呢

也许不是这个意思也许是说这个吧:
#define a aa;
#define aa 1;
可嵌套是指这个意思吧;
不可递归就是不能定义回去吧,比如说:
#define a aa;
#define aa aaa;
#define aaa a;
第2个回答  2013-02-22
在C语言中宏是用来加载代码的,是一个单独的程序处理的。
比如,#define f(n) n==0? 1:f(n-1)+f(n-2)
当n=5时,就会被展开为
f(n-1)+f(n-2);
之后f(n)就找不到了,所以无法实现递归。
相似回答