一段玩技巧的C代码,原来也是颇有来头的~~
void foo(char* a, char* b, int len){
switch(len & 7) {
default:
while (len > 7) {
len -= 8;
*b++ = *a++;
case 7:*b++ = *a++;
case 6:*b++ = *a++;
case 5:*b++ = *a++;
case 4:*b++ = *a++;
case 3:*b++ = *a++;
case 2:*b++ = *a++;
case 1:*b++ = *a++;
}
}
}
呵呵,能看出这段代码做啥用的吗?看不出来也不用灰心哈,我拿给纯C论坛的站长看这个,他都还怀疑我给的代码有问题呢。而我也是在知道其功能是strcpy的前提下看懂的。本来没啥,就是写这段代码的人把while循环插到switch的default和case之间,把人弄晕了。如果是面试题,其考点应该是看答题人对switch…case…结构从C到汇编的转换了解如何吧
后来再一google,发现原来这段代码也颇有来头,原来说传说中的[Duff’s Device](http://www.lysator.liu.se/c/duffs-device.html),二十好几年前的古董啦~~