2010-11-22 13 views
35

मैंने गलती से वापसी कथनजीसीसी का कहना है कि "नाम वापसी मूल्य अब समर्थित नहीं हैं"?

int id(int k) return k; { } 

के बाद मेरे समारोह परिभाषा के उद्घाटन ब्रेस डाल लेकिन जीसीसी एक अजीब त्रुटि संदेश

error: named return values are no longer supported

साथ जवाब किसी को भी कृपया व्याख्या कर सकते हैं क्या है कि अजीब सुविधा हो सकता है? मैंने इसके बारे में कभी नहीं सुना है।

+0

शायद एनआरवीओ के कुछ शुरुआती कार्यान्वयन जहां आपको प्रतिलिपि बनाने के लिए इसे चर का नाम देना था? –

+0

गो ने परिणाम पैरामीटर नाम दिया है, http://golang.org/doc/effective_go.html – u0b34a0f6ae

उत्तर

37

here देखें - फंक्शन हेडर में नामित वापसी मूल्य की स्पष्ट परिभाषा के प्रारंभिक एनआरवीओ कार्यान्वयन।

इस एक्सटेंशन के बिना एनआरवीओ के लिए मूल समर्थन here - जीसीसी 3.1 रिलीज श्रृंखला जोड़ा गया था।

संक्षिप्त कटौती और संदर्भ के लिए पेस्ट:

G++ now supports the "named return value optimization": for code like

A f() { 
    A a; 
    ... 
    return a; 
} 

G++ will allocate a in the return value slot, so that the return becomes a no-op. For this to work, all return statements in the function must return the same variable.

+0

वाह वह पागल है। जवाब के लिए धन्यवाद। –

+0

एनआरवीओ लंबे समय तक काम करने की कोशिश करने में लंबे समय व्यतीत करने के बाद मेरे दिल के नजदीक एक विषय है, क्यों भारी वीसी ++ 7.1 (जो कि अंतिम माइक्रोसॉफ्ट सी ++ नहीं है, एनआरवीओ नहीं है) बड़े 'वेक्टर' परिणामों को लौटने पर इतनी धीमी है ... –

+0

isn वीसी ++ 2008 में कुछ भी नहीं है जैसे डीबग बिल्ड में कोई एनआरवीओ नहीं है? –

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