2008-12-01 6 views
5

सी में निम्नलिखित हॉरर मान्य है:क्या सी ++ कार्यों के लिए डिफ़ॉल्ट रिटर्न प्रकारों की अनुमति देता है?

myFunc() 
{ 
    return 42; // return type defaults to int. 
} 

लेकिन, सी ++ में किस बारे में? मैं यह करने के लिए एक संदर्भ के किसी भी तरह से नहीं मिल सकता है ...

मेरे संकलक (CodeGear सी ++ बिल्डर 2007) वर्तमान में बिना किसी चेतावनी के यह स्वीकार करता है, लेकिन मैं टिप्पणी नहीं मिला है कि इस में कोई त्रुटि है सी ++।

+0

कौन सा संकलक है? मैंने कभी ऐसा नहीं किया है जिसने इसे स्वीकार किया है। – jalf

+0

CG2007 - प्रश्न में जोड़ा गया। – Roddy

उत्तर

16

यह बी ++ में बीमार है। मतलब यह है कि यह मानक अनुरूप कंपाइलर के साथ संकलित नहीं है। मानक के अनुलग्नक सी में अनुच्छेद 7.1.5/4 परिवर्तन "अंतर्निहित अंतर्निहित प्रतिबंध" परिवर्तन बताता है।

+0

उदाहरण के लिए यदि आप g ++ के साथ संकलित करते हैं, तो सुनिश्चित करें कि '-W -Wall' झंडे को चेतावनी है, या' -pedantic' को एक त्रुटि के रूप में रखना है। –

+0

आप सी/सी ++ मानक के विश्वकोश चल रहे हैं :) – Ilya

+1

इलिया, मेरी इच्छा है कि मैं थे। मैं सिर्फ इसकी एक प्रति है हेहे :) –

8

लागू वापसी प्रकार C89 में मान्य हैं, लेकिन बहुत से कंपाइलर इसके बारे में चेतावनी देते हैं।

वे सी ++ में मान्य नहीं हैं, न ही सी 99 में।

2

यह कानूनी सी ++ नहीं है, लेकिन कुछ कंपाइलर इसे चुपचाप या नैदानिक ​​के साथ स्वीकार करेंगे।

4

तो, यह निश्चित रूप से 'बीमार गठित' सी ++ है, लेकिन ऐसा लगता है कि कई कंपाइलर्स इसे सर्वोत्तम रूप से चेतावनी के साथ स्वीकार करते हैं।

  • CodeGear सी ++ बिल्डर 2007: कोई त्रुटि या सभी
  • जी ++ में चेतावनी: चेतावनी उत्पन्न करने के लिए आवश्यक है डब्ल्यू -Wall या त्रुटि (पायोत्र)
  • MSVC 8 उत्पन्न करने के लिए -pedantic: एक का उत्पादन त्रुटि (tfinniga)
  • अन्य ...?

कृपया इस सूची को जोड़ें/सही करें!

1

पोस्ट के रूप में, यह खराब गठित है। एमएसवीसी 8 निम्नलिखित त्रुटि देता है:

error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 
संबंधित मुद्दे

 संबंधित मुद्दे