मैं निम्नलिखित कार्य हो कहते हैं:क्या मैं कंप्रेसर को रिटर्न वैल्यू के संबंध में बंद नियंत्रण पथ पर विचार करने के लिए कह सकता हूं?
Thingy& getThingy(int id)
{
for (int i = 0; i < something(); ++i)
{
// normal execution guarantees that the Thingy we're looking for exists
if (thingyArray[i].id == id)
return thingyArray[i];
}
// If we got this far, then something went horribly wrong and we can't recover.
// This function terminates the program.
fatalError("The sky is falling!");
// Execution will never reach this point.
}
संकलनकर्ता आम तौर पर, इस पर शिकायत करते हुए कहा कि "नहीं सभी नियंत्रण पथ मान"। जो तकनीकी रूप से सत्य है, लेकिन नियंत्रण पथ जो फ़ंक्शन समाप्त होने से पहले प्रोग्राम को रोकते हैं, और इसलिए अर्थात् सही हैं। क्या संकलक को बताने का कोई तरीका है (मेरे मामले में वीएस -2010, लेकिन मैं दूसरों के बारे में भी उत्सुक हूं) कि इस जांच के प्रयोजनों के लिए एक निश्चित नियंत्रण पथ को अनदेखा किया जाना चाहिए, पूरी तरह से चेतावनी को दबाए बिना या एक गैरकानूनी डमी लौटाए समारोह के अंत में मूल्य?
या, विजुअल C++ '__declspec (noreturn) के लिए' –
यह फ़ंक्शन केवल वापस आ जाएगी कुछ भी नहीं है, जब असाधारण पथ लिया जाता है के रूप में लागू नहीं होता। – Nobody
@ नोबॉडी उस घातक को कभी वापस लौटने की घोषणा नहीं की जाती है इसका मतलब यह नहीं है कि GetThingy मामलों में नहीं हो सकता है घातक त्रुटि नहीं कहा जाता है। –