ゲームが作れるようになるまでがんばる日記

ゲーム制作のことを中心にゲームに関することを書いています

Duff's Device

ときどきの雑記帖 (null)編で見たプログラム。

void
    send(short *to, short *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);
        }
    }

最初、ただのswitch文かと思ったら、switch文の中にdo-whileのループが入っている。こんな書き方できるんだとびっくり。そして、まだちゃんと理解できていない。


参考:Duff's device - Wikipedia