【发布时间】:2013-08-27 15:57:53
【问题描述】:
在 linux/kernel/signal.c 中找到这个
switch (_NSIG_WORDS) {
default:
for (i = 1; i < _NSIG_WORDS; ++i) {
x = *++s &~ *++m;
if (!x)
continue;
sig = ffz(~x) + i*_NSIG_BPW + 1;
break;
}
break;
case 2:
x = s[1] &~ m[1];
if (!x)
break;
sig = ffz(~x) + _NSIG_BPW + 1;
break;
case 1:
/* Nothing to do */
break;
}
也许这不是一个很好的例子,但我不明白它是如何工作的,以及是什么促使 Linus 将 default-section 放在 switch 语句的前面。
【问题讨论】:
-
x = *++s &~ *++m;==x = (*(++s)) & (~(*(++m)));..default:就像其他任何情况一样,如果您最后没有写,您需要添加break;语句,原因与其他情况相同跨度>
标签: c switch-statement