_Noreturn (C11) या noreturn (<stdnoreturn.h> से) फंक्शन को "कभी रिटर्न नहीं करता" मार्क करता है। कंपाइलर ऑप्टिमाइज़ कर सकता है और रिटर्न स्टेटमेंट पर चेतावनी दे सकता है।
सिंटैक्स
_Noreturn void func(void); // C11 // या #include <stdnoreturn.h> noreturn void func(void);
उदाहरण
#include <stdio.h>
#include <stdnoreturn.h>
#include <stdlib.h>
noreturn void abort_program() {
printf("Fatal error! Aborting...\n");
exit(1); // कभी रिटर्न नहीं करता
// return; // Warning: function declared 'noreturn' has a 'return' statement
}
int main() {
int x = 0;
if (x == 0)
abort_program();
printf("This never prints\n");
return 0;
}
आउटपुट
Fatal error! Aborting...
उपयोग के मामले
exit,abort,_Exitजैसी फंक्शन्स।- इनफिनाइट लूप वाले फंक्शन्स (इवेंट लूप्स, सर्वर मेन लूप)।
- हमेशा थ्रो करने वाले फंक्शन्स (C++ में
[[noreturn]])।
कंपाइलर व्यवहार
- ऑप्टिमाइज़ेशन: कॉल के बाद कोड अनरीचेबल माना जाता है।
- डायग्नोस्टिक: यदि फंक्शन रिटर्न करता है तो वार्निंग/एरर।
- स्टैक फ्रेम ऑप्टिमाइज़ेशन संभव।
C++ समकक्ष
[[noreturn]] void func(); // C++11 एट्रिब्यूट सिंटैक्स