在Zed Shaw的《学习C语言的艰苦方式》第23节中,他谈到了Duff's Device。以下是Duff's Device代码:
int duffs_device(char *from, char *to, 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);
}
}
return count;
}
他要求读者做如下事情:
创建一组宏,使您能够创建任意长度的设备。例如,如果您想要有32个 case 语句而不想编写所有内容,您能否创建一个宏,每次生成8个?
这真的让我困扰,我觉得我只需要正确的方向。非常感谢您的帮助!