मुझे कभी-कभी कोडर्स दिखाई देते हैं जो C और C ++ प्रोग्राम्स के NULL
रिटर्न वैल्यू के रूप में उपयोग करते हैं main()
, उदाहरण के लिए कुछ इस तरह से:
#include <stdio.h>
int main()
{
printf("HelloWorld!");
return NULL;
}
जब मैं इस `कोड को gcc के साथ संकलित करता हूँ तो मुझे इसकी चेतावनी मिलती है:
चेतावनी: रिटर्न एक डाली के बिना सूचक से पूर्णांक बनाता है [-विशेष-रूपांतरण]
जो उचित है क्योंकि मैक्रो NULL
का विस्तार किया जाएगा (void*) 0
और मुख्य का वापसी मूल्य प्रकार का होगा int
।
जब मैं एक छोटा C ++ प्रोग्राम बनाता हूं:
#include <iostream>
using namespace std;
int main()
{
cout << "HelloWorld!";
return NULL;
}
और इसे जी ++ के साथ संकलित करें, मुझे एक बराबर चेतावनी मिलती है:
चेतावनी: NULL [-Wconversion-null] से गैर-पॉइंटर प्रकार 'int' में परिवर्तित करना
लेकिन जब वे चेतावनी देते हैं तो वे NULL
रिटर्न वैल्यू के रूप में क्यों इस्तेमाल करते हैं main()
? क्या यह केवल खराब कोडिंग शैली है?
- चेतावनी के बावजूद वापसी मूल्य के
NULL
बजाय उपयोग करने का क्या कारण है ?0
main()
- क्या यह कार्यान्वयन-परिभाषित है कि क्या यह उचित है या नहीं और यदि ऐसा है तो कोई भी कार्यान्वयन पॉइंटर वैल्यू वापस क्यों लेना चाहेगा?
EXIT_FAILURE
8 है, और ऐसा लगता है कि 1 का उपयोग करना विफलता के लिए अच्छा नहीं है क्योंकि यह कुछ समय में कुछ कार्यक्रमों में सफलता के रूप में उपयोग किया जाता है।
NULL
पॉइंटर को 0
कास्ट (बिना कास्ट void *
) के रूप में परिभाषित करने के लिए पूरी तरह से वैध है । इस मामले में, दोष किसी का ध्यान नहीं जाता है और चेतावनी उत्पन्न नहीं करता है। यह अभी भी नहीं है कि NULL का उपयोग किस लिए किया जाना चाहिए।