मुझे कभी-कभी कोडर्स दिखाई देते हैं जो 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बजाय उपयोग करने का क्या कारण है ?0main() - क्या यह कार्यान्वयन-परिभाषित है कि क्या यह उचित है या नहीं और यदि ऐसा है तो कोई भी कार्यान्वयन पॉइंटर वैल्यू वापस क्यों लेना चाहेगा?
EXIT_FAILURE8 है, और ऐसा लगता है कि 1 का उपयोग करना विफलता के लिए अच्छा नहीं है क्योंकि यह कुछ समय में कुछ कार्यक्रमों में सफलता के रूप में उपयोग किया जाता है।
NULLपॉइंटर को 0कास्ट (बिना कास्ट void *) के रूप में परिभाषित करने के लिए पूरी तरह से वैध है । इस मामले में, दोष किसी का ध्यान नहीं जाता है और चेतावनी उत्पन्न नहीं करता है। यह अभी भी नहीं है कि NULL का उपयोग किस लिए किया जाना चाहिए।