我一直在尝试使用预处理器创建一个查找表,该预处理器应返回单个字节值的二进制表示。基本上有256个元素的字符串数组。我似乎无法找到任何模式,所以我想知道它是否可能。
答案 0 :(得分:4)
你走了:
#include <stdio.h>
/* A macro for each bit */
#define B1(n) n "0", n "1"
#define B2(n) B1(n "0"), B1(n "1")
#define B3(n) B2(n "0"), B2(n "1")
#define B4(n) B3(n "0"), B3(n "1")
#define B5(n) B4(n "0"), B4(n "1")
#define B6(n) B5(n "0"), B5(n "1")
#define B7(n) B6(n "0"), B6(n "1")
/* Shorter way: macros add 2 bits */
#define C2(s) s"00", s"01", s"10", s"11"
#define C4(s) C2(s"00"), C2(s"01"), C2(s"10"), C2(s"11")
#define C6(s) C4(s"00"), C4(s"01"), C4(s"10"), C4(s"11")
static const char* Table256[256] =
{
/* B7("0"), B7("1") */
C6("00"), C6("01"), C6("10"), C6("11")
};
int main(int argc, const char* argv[])
{
int i;
for( i=0; i<256; ++i )
printf("%s ", Table256[i]);
printf("\n");
return 0;
}
代码为tested at ideone。