说是循环,不准确,其实只是递归,所以我就创造下名词:递归式循环。
源自前面一个帖子的实现,单独解释下用法,也许有人会用得着。
-----------------------------------------------------------------------
问题,要定义一个
#define foo(x)
foo(0)可以得到 0,
foo(1)可以得到 0, 2,
foo(2)可以得到 0, 2, 4,
foo(3)可以得到 0, 2, 4, 6,
-----------------------------------------------------------------------
下面解释下具体的实现细节:
1. 首先实现基础构建mfor.h
宏实现递归,绝对是一件苦力活。
苦力到什么程度?每次递归,都需要手工写一次。
所以看到,mfor.h实现如下#define FORA0(x) x(0,)
#define FORA1(x) x(1,FORA0(x))
#define FORA2(x) x(2,FORA1(x))
#define FORA3(x) x(3,FORA2(x))
#define FORA4(x) x(4,FORA3(x))
...
复制代码想要实现2千次递归/循环?写2千个FORA。
好在这个mfor.h可以用机器生成,并且一旦生成,一般也不需要改动了。
本内容试读结束,登录后可阅读更多
下载后可阅读完整内容,剩余2页未读,立即下载