gcc
5.2.0 का उपयोग के साथ शून्य लौटने, मैंने देखा है कि इस कोड को एक चेतावनी उत्पन्न नहीं करता है:कोई चेतावनी जब जीसीसी
#include <stddef.h>
int function(void)
{
return NULL;
}
void procedure(void)
{
return NULL;
}
मैं झंडे -Wall -Wextra -std=c99 -pedantic
का इस्तेमाल किया और मैं archlinux चल रहा हूँ। मुझे यकीन नहीं है कि यह कोड gcc
पर ठीक क्यों काम करता है, खासकर clang
3.7.0 एक चेतावनी उत्पन्न करता है।
मैंने gcc
के पुराने संस्करणों के साथ 4.9 या 4.7 की तरह भी कोशिश की और वे दोनों चेतावनियां उत्पन्न करते हैं।
चेतावनी है:
warning: return makes integer from pointer without a cast
और
warning: ‘return’ with a value, in function returning void
मुझे लगता है कि मैं डेबियन पर जीसीसी 5.2 संकलन की कोशिश की और परिणाम एक ही है उल्लेख करना चाहिए। तो archlinux समस्या प्रतीत नहीं होता है।
तर्क क्या है? मुझे कहीं और इससे संबंधित कुछ भी नहीं मिल रहा है।
धन्यवाद!
संभावित डुप्लिकेट http://stackoverflow.com/questions/1610030/why-can-you-return-from-a-non-void-function-without-returning-a-value-without-pr –
लॉल आपका मतलब है "उलटा डुप्लिकेट"? यह सवाल पूछता है कि आप एक शून्य कार्य के शरीर में मूल्य क्यों वापस कर सकते हैं। "डुप्लिकेट" पूछता है कि आप रिटर्न स्टेटमेंट के बिना गैर-शून्य कार्य का एक शरीर क्यों लिख सकते हैं। – BitTickler
संभावित डुप्लिकेट [क्यों एक फंक्शन से 0x80000000 वापस नहीं लौटाता है जो int32 \ _t चेतावनी देता है?] (Http://stackoverflow.com/questions/32656460/why-doesnt-returning-0x80000000-from-a- कार्यक्षमता -थैट-रिटर्न-इंट 32-टी-कारण-ए-वा) –