हां, जैसा कि हर कोई कहता है। सी ++ यह निर्दिष्ट/अनिवार्य है।
लेकिन सिर्फ इतना है कि में जोड़ने के लिए, पूर्णता के लिए: अपने goto
computed- goto
एक्सटेंशन कुछ compilers में मिली जानकारी का उपयोग करता है, तो - MSVC सहित जीसीसी, बजना, संभवतः दूसरों लेकिन नहीं पिछले मैं जानता था - या नहीं, ऑब्जेक्ट के विनाशक को बुलाया जाएगा बहुत आलसी है। जब goto
एक ही स्थान पर जाता है, तो यह बहुत स्पष्ट है कि नियंत्रक को नियंत्रण-प्रवाह हस्तांतरण से पहले क्या कहा जाना चाहिए। लेकिन एक गणना goto
के साथ, "अपेक्षित" अर्थशास्त्र देने के लिए विभिन्न विनाशकों को गतिशील रूप से कॉल करने की आवश्यकता हो सकती है। मुझे यकीन नहीं है कि इस एक्सटेंशन को लागू करने वाले कंपाइलर्स, उन मामलों में क्या करते हैं। इसका सामना करने से मेरी याददाश्त यह है कि क्लैंग चेतावनी देता है जब गणना की जाती है- goto
किसी ऑब्जेक्ट के साथ एक गैर-परीक्षण विनाशक के साथ एक गुंजाइश छोड़ सकता है, जिसका दावा है कि विनाशक को नहीं बुलाया जाएगा। कुछ मामलों में यह ठीक हो सकता है, दूसरों में नहीं। मैं नहीं जानता कि अन्य कंपाइलर क्या करते हैं। यदि आप गैर-तुच्छ विनाशकों के साथ वस्तुओं के साथ संगीत कार्यक्रम में गणना goto
एस का उपयोग करना चाहते हैं तो बस इस मुद्दे से अवगत रहें।
स्रोत
2013-04-10 17:14:55
आपको यह जानने की आवश्यकता क्यों है? 'गोटो' जेनरेट कोड में समझ में आता है, लेकिन वैसे भी आप विनाशकों के साथ वस्तुओं से बच सकते हैं और उन्हें टालना चाहिए। – MSalters
@MSalters: यह बिल्कुल परेशान नहीं करता है, आप विनाशकों के साथ वस्तुओं से क्यों बचें? –
@ विक्टर: मुझे वाक्य के दूसरे भाग का विस्तार करने दें: _ जेनरेट कोड_ में, आप वैसे भी विनाशकों के साथ वस्तुओं से बच सकते हैं। 'गोटो 'का कैननिकल उपयोग जेएसएम कोड जेनरेट किया गया है। राज्य कोडों के संबंध में यहां कूदता है और आगे, आगे बढ़ता है जो कि बीच में होता है। एफएसएम राज्य बस रैखिक नहीं हैं, लेकिन सी ++ कोड होना चाहिए। – MSalters