linux/कर्नेल/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;
}
हो सकता है कि यह काफी अच्छा उदाहरण नहीं है, लेकिन मैं नहीं समझ सकता है कि यह कैसे काम करता है और क्या लीनुस के लिए प्रेरित किया स्विच स्टेटमेंट के सामने डिफ़ॉल्ट-अनुभाग डालने के लिए।
'x = * ++ s & ~ * ++ m;' == 'x = (* (++ s)) और (~ (* (++ m)));' ..'default: 'यदि आप आखिरी बार नहीं लिखते हैं तो किसी भी अन्य मामले की तरह आपको' ब्रेक 'जोड़ने की ज़रूरत है, इसी कारण से हम अन्य मामले –