c++ - Major differences between Visual Studio 6.0 and VS 2010 Compilers -
प्रिय स्टैकओवरफ्लो समुदाय,
कुछ महीनों अगो मैंने निम्नलिखित प्रश्न पोस्ट किया
आगामी चर्चा और आपकी टिप्पणियों ने मुझे यह महसूस करने में मदद की कि मेरे हाथों को नए संकलक पर लेना अनिवार्य था - या मूल रूप से वे अंतिम चिंगारी थे जो मुझे गति में सेट करते थे। कंपनी-आंतरिक "पैरवी" के एक महीने के बाद मैं अंततः वी.एस. 2012 प्राप्त कर रहा हूं !! (धन्यवाद लोग)
मुझे इस्तेमाल करने वाले कई पुराने उपकरण वी.एस. 6.0 के साथ विकसित किए गए थे
मेरी चिंताएं हैं कि इन उपकरणों में से कुछ नए कंपाइलर के साथ काम नहीं कर सकते हैं यही कारण है कि मैं सोच रहा था कि यहाँ कोई वी.एस. 6 और वीएस 2012 के बीच प्रमुख अंतर को इंगित कर सकता है - या कम से कम वी.एस. 6 और वीएस 2010 के बीच - 2010 से 2012 तक हुए बदलाव अच्छी तरह से ऑनलाइन दस्तावेज हैं। < पी> जाहिर है वी.एस. 6.0 और वीएस 12 के बीच मतभेदों को भारी होना चाहिए ... मैं ज्यादातर बुनियादी चीजों जैसे कि डाले आदि के साथ संबंध रखता हूं। वेब पर वी.एस. 6.0 के बारे में शायद ही कोई भी संकेत नहीं है- और मैं कुछ हद तक नुकसान में हूं: (< / P>
मुझे लगता है कि मुझे उसी कक्षाओं के साथ नई परियोजनाएं बनाना होगा। दूसरे चरण में मैं पुराने टूल के साथ .h और .cpp फ़ाइलों को अधिलेखित कर दूंगा। इस प्रकार कम से कम मैं नए कंपाइलर के माध्यम से फ़ाइलें खोलें। फिर भी कुछ डाली या क्लास परिभाषाएं समर्थित नहीं हैं और मैं एक सामान्य विचार करना चाहूंगा कि डीबग करने के दौरान क्या देखना है:)
हमेशा की तरह मैं किसी के लिए आभारी हूं सलाह।
ग्रीटिंग्स एंड्री
भाषा में काफी वृद्धि हुई है क्योंकि वी.एस. 6.0 बाहर आया। वीएस 6.0 प्री-सी ++ 98; वी.एस. 2012 सी ++ 03 से कुछ विशेषताएं हैं, सी ++ 03
अधिकतर नई भाषा सुविधाएं ऊपर की तरफ से संगत हैं; पुराने कोड अभी भी काम करना चाहिए फिर भी, वीसी 6.0 पूर्व-मानक है, और समिति मौजूदा कोड को तोड़ने के बारे में कम चिंतित थी, जब कोई पिछला मानक नहीं था (और कार्यान्वयन अलग-अलग था)। भाषा (कम से कम) के कई पहलू हैं जो समस्याएं पैदा कर सकते हैं।
पहला यह है कि वीसी 6.0 अभी भी यह वीसी 2012 में संकलित नहीं होगा (जब तक कि एक वैश्विक वैरिएबल आईआईआरसी, भी, प्रवेश नियंत्रण और const को लागू करने में वीसी 6.0 बहुत सख्त नहीं था यह माइग्रेट करने में समस्या नहीं हो सकती है, हालांकि, क्योंकि वीसी 2012 अभी भी कुछ अधिक प्रमुख मामलों में कम से कम डिफ़ॉल्ट विकल्पों के साथ C + + 98 के अनुरूप नहीं है, (आप अब भी अस्थायी रूप से गैर-कॉन्स्ट संदर्भ में बाइंड कर सकते हैं, उदाहरण के लिए।) एक और प्रमुख भाषा परिवर्तन जो पीछे की तरफ से संगत नहीं है टेम्पलेट्स में नाम लुकअप है। यहां भी, हालांकि, वीसी 2012 में भी, माइक्रोसॉफ्ट ने पूर्व-स्टैंडएन्ड नाम लुकअप (और मेरा मतलब पूर्व-सी ++ 98) लागू किया है। यह एक गंभीर समस्या है अगर आप अपने कोड को अन्य कंपाइलर में बंद करना चाहते हैं, लेकिन यह वीसी 6.0 से वीसी 2012 तक बहुत आसान बनाकर माइग्रेट करता है। पुस्तकालय के संबंध में, मुझे याद नहीं है कि 6.0 सी + + 98 पुस्तकालय का समर्थन करता है, या यह अभी भी पूर्व मानक था (या संभवतः यह दोनों समर्थित है)। यदि आपके कोड में के लिए ले जाया गया था: आपका कोड स्पष्ट रूप से वीसी के बाद पेश की जाने वाली किसी भी सुविधा का उपयोग नहीं करेगा 6.0 दिखाई दिया यह माइग्रेशन समस्याओं का कारण नहीं होगा (चूंकि पुरानी सुविधाएं अभी भी समर्थित हैं), लेकिन आप बिना किसी कारण वापस लौटना चाहते हैं, और एक बार आपके द्वारा माइग्रेट किए जाने के बाद कोड को धीरे-धीरे अपग्रेड कर लेंगे। (आप का उल्लेख किया जाता है यह एक अच्छा उदाहरण है: सी शैली डाली अभी भी कानूनी है, उसी शब्दों के साथ वे हमेशा रहे हैं, लेकिन नए कोड में, आप उनसे बचना चाहते हैं, और कम से कम जब संकेत या संदर्भ शामिल हैं। ) के में परिभाषित चर के लिए पुरानी स्कॉपिंग का इस्तेमाल करता है। इस प्रकार, वीसी 6.0 में, निम्न जैसी चीजें कानूनी थीं:
int findIndex (int * array, int size, int target) {for (int i = 0; i & lt; आकार & amp; & Amp; सरणी [i]! = लक्ष्य; ++ i) {} वापसी आई; }
i भी नहीं होता है, उस स्थिति में, यह वापस करेगा , और नहीं स्थानीय एक)।
#include & lt; iostream.h & gt; जैसी चीज़ें हैं, तो यहां कुछ अंतर के लिए तैयार रहें:
& lt;
streambuf लागू करते हैं और ज़ाहिर है, सभी पुस्तकालय वैश्विक नाम स्थान से
std :: ।
Comments
Post a Comment