Zed Shaw のLearn C the Hard Wayから、演習 23 で、彼は Duff のデバイスについて話します。参考までに、ダフのデバイスは次のとおりです。
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 ステートメントが必要で、すべてを書き出したくない場合はどうすればよいでしょうか?時間?"
これは本当に私を困惑させ、私は正しい方向に微調整する必要があると感じています. どんな助けでも大歓迎です!