क्या विजुअल स्टूडियो 2010 में आरवीओ (रिटर्न वैल्यू ऑप्टिमाइज़ेशन) को अक्षम करना संभव है? ऑप्टिमाइज़ेशन फ्लैग को /Od
पर सेट करें (सभी अनुकूलन बंद कर देता है) मदद नहीं करता है। जी ++ में ध्वज -fno-elide-constructors
मौजूद है जो आरवीओ को अक्षम करता है।विजुअल स्टूडियो 2010 में रिटर्न वैल्यू ऑप्टिमाइज़ेशन को कैसे अक्षम करें?
उत्तर
आप नहीं कर सकते। यह इतना ही सरल है। आरवीओ/एनआरवीओ मानक है, और आपका कोड उस पर निर्भर नहीं होना चाहिए जो मौजूद नहीं है।
अपने चर को volatile
के रूप में परिभाषित करने का प्रयास करें, शायद आपकी समस्या हल करें। यदि ऐसा नहीं होता है, तो आपको कोड भेजना चाहिए ...
+1; हालांकि यह सिर्फ एक यादृच्छिक अनुमान है (और इस तरह के डाउनवॉट्स के हकदार हैं) यह सही है कि 'my_volatile_variable लौटाएं;' आरवीओ अक्षम करता है। (सी ++ 11 §12.8/31 आइटम 1.) – Potatoswatter
@ पोटाटोस्वाटर: मैं उत्सुक हूं कि आपने मेरे जवाब के बारे में सिर्फ एक यादृच्छिक अनुमान के रूप में क्यों सोचा। मेरे जवाब में "शायद" का मतलब था कि मुझे इस जवाब का यकीन नहीं था क्योंकि मुझे नहीं पता था कि असली समस्या क्या थी। आईएमएचओ, यह प्रश्न http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem – Malkocoglu
आह की माफ़ी में है, क्षमा करें। मुझे लगता है कि यही वजह है कि उन्होंने आपको कम किया। ('अस्थिर' से जुड़े एक उत्तर को उचित ठहराना बेहतर है।) – Potatoswatter
इस अनुकूलन को अक्षम करने का कोई कारण नहीं है! आप क्या हासिल करने का प्रयास कर रहे हैं? यह डिबग बिल्डों को किसी भी बुरे दुष्प्रभाव के बिना तेजी से चलाने में मदद करता है। यह आरवीओ या एनआरवीओ पर आधारित कोड को डीबग और रिलीज में समान रूप से काम करता है।
मैं एक (कम से कम मेरे लिए) बहुत महत्वपूर्ण कारण सोच सकता हूं: शिक्षा! जब आप कंपाइलर उन्हें छोड़ देते हैं तो आप कंसल्टर्स को कैसे समझाते हैं, कंट्रोलर्स को ले जाते हैं/प्रतिलिपि बनाते हैं, एक छात्र को फंक्शन कॉल में विनाशक! मैं ऐसे विकल्प का समर्थन करने के लिए जी ++ के लिए बहुत आभारी हूं। – Goran
मुझे इसे लौटाए गए मूल्य के जीवनकाल को समझने के लिए अक्षम करना है, मैं इसे अब समझ नहीं पा रहा हूं क्योंकि यह अस्थायी नहीं बनाता है, बस इसे सीधे कॉपी करता है। – Zebrafish
जहां तक मैं आरवीओ/एनआरवीओ बता सकता हूं ** ** मानक नहीं है (सी ++ 0x मानक, सेक्शन 12.8 देखें। क्लास ऑब्जेक्ट्स को कॉपी करना और ले जाना, अनुच्छेद 32)। मानक बस इस तरह के अनुकूलन (जी ++ और विजुअलस्टूडियो इसे लागू करता है) की अनुमति देता है। मुझे इससे कोई समस्या नहीं है। लेकिन यह अक्षम करने के लिए कुछ स्विच होना अच्छा लगेगा। शैक्षणिक उद्देश्यों के लिए शायद। धन्यवाद, अब यह बहुत स्पष्ट है :) – Goran
@ गोरान: यदि मानक स्पष्ट रूप से इसे अनुमति देता है, तो यह मानक है। – Puppy
अनुमति दें! = आवश्यकताएँ। चूंकि यह मानक का हिस्सा नहीं है, यह केवल मानक के विपरीत नहीं होगा। –