很多年前,在处理严格的图形I/O问题时,Tom Duff展开了一个循环并创建了他的Duff设备,如下所示:
dsend(to, from, count)
char *to, *from;
int count;
{
int n = (count + 7) / 8;
switch (count % 8) {
case 0: do { *to = *from++;
case 7: *to = *from++;
case 6: *to = *from++;
case 5: *to = *from++;
case 4: *to = *from++;
case 3: *to = *from++;
case 2: *to = *from++;
case 1: *to = *from++;
} while (--n > 0);
}
}
Run Code Online (Sandbox Code Playgroud)
(注意这使用旧式函数参数 - 这不是错误.)
这种编码直接来自于汇编程序和C编码的思考,并且依赖于C的case语句落实.隔行扫描控制结构中的这种创造力能否适用于任何其他语言?
在讨论具有大量常量和位模式的项目的设计可能性时,问题出现了标准编译器可以处理多少#defines?我认为它是一个非常大的数字,但我们很想知道是否有一个实际的上限.