जब से मुझे कई साल पहले एहसास हुआ, कि यह डिफ़ॉल्ट रूप से (जीसीसी में कम से कम) त्रुटि पैदा नहीं करता है, मैंने हमेशा सोचा है कि क्यों?
मैं समझता हूं कि आप चेतावनी देने के लिए संकलक झंडे जारी कर सकते हैं, लेकिन क्या यह हमेशा एक त्रुटि नहीं होनी चाहिए? एक गैर-शून्य फ़ंक्शन के लिए यह क्यों समझ में आता है कि मान मान्य नहीं है?
टिप्पणियों में अनुरोध किया गया एक उदाहरण:
#include <stdio.h>
int stringSize()
{
}
int main()
{
char cstring[5];
printf( "the last char is: %c\n", cstring[stringSize()-1] );
return 0;
}
... संकलित करता है।
-Werror=return-type
उस चेतावनी को त्रुटि के रूप में मानेंगे। मैंने सिर्फ चेतावनी को नजरअंदाज कर दिया और कुछ मिनटों की हताशा को ट्रैक करते हुए एक अमान्य this
सूचक ने मुझे यहां और इस निष्कर्ष पर पहुंचा दिया।
std::optional
समारोह के अंत के बिना बहने वाला एक "सच्चा" वैकल्पिक रिटर्न देता है