许多年前,当Tom Duff在解决一个紧急的图形输入/输出问题时,他展开了一个循环,并创建了他的Duff's Device,如下所示:
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);
}
}
(请注意,这里使用的是旧式函数参数 - 这不是错误。)
这种编码直接源于汇编语言思维和C语言编码,并依赖于C语言中的case语句穿透。在其他编程语言中,这种交错控制结构的创造性是否可行呢?