【发布时间】:2013-08-10 06:50:39
【问题描述】:
static const unsigned char BitsSetTable256[256] =
{
# define B2(n) n, n+1, n+1, n+2
# define B4(n) B2(n), B2(n+1), B2(n+1), B2(n+2)
# define B6(n) B4(n), B4(n+1), B4(n+1), B4(n+2)
B6(0), B6(1), B6(1), B6(2)
};
这段代码在设置位问题中非常有名。我已经了解它在编译时如何输出查找表。
但我需要更多的直觉来理解这个..意味着
B2(n),B4(n),B6(n)是什么意思??
以及归结为这个递归宏的基本思想是什么?
已编辑 我的意思是递归背后的想法是什么
【问题讨论】:
-
这不是归结为宏的想法,而是相反。除此之外:宏可以有参数。
#define B2(n) n, n+1, n+1, n+2表示每当遇到B2(somenumber)时,都会被预处理器替换为somenumber, somenumber+1, somenumber+1, somenumber+2。 -
文本替换的宏函数,
B2(n)将创建这个n, n+1, n+1, n+2文本,其中 n 是一个数字
标签: c recursion macros bit preprocessor-directive