हमारी कंपनी उपग्रह संचार के लिए स्रोत कोड का एक बड़ा और बहुत जटिल टुकड़ा खरीदेगी। यह C ++ में कोडित है और हम इसे C ++ में भी जोड़ देंगे, हमारे कोड को खरीदे गए कोड के साथ एक एकल निष्पादन योग्य इकाई में जोड़ देंगे।
बढ़िया है!
क्या यह आवश्यक है कि हम उसी संकलक और उसी संकलक संस्करण का उपयोग करें जिसका उपयोग खरीदे गए कोड को विकसित करने के लिए किया गया था?
आम तौर पर बोलते हुए, नहीं, यह आवश्यक नहीं है। C ++ का उद्देश्य इस प्रकार की चीजों पर अमूर्तता के रूप में कार्य करना है, इसलिए एक अच्छी तरह से लिखा गया C ++ प्रोग्राम आपके टूलकिन पर उसी तरह संकलित होगा जैसा कि उसने मूल लेखक पर किया था, और परिणामस्वरूप प्रोग्राम का परिणाम समान होगा। प्रदर्शन अलग-अलग हो सकता है, क्योंकि अलग-अलग चीजों में अलग-अलग संकलक अच्छे हैं, लेकिन कार्यक्रम का मौलिक व्यवहार नहीं बदलना चाहिए।
हालांकि, बुरी तरह से लिखा गया सॉफ्टवेयर कार्यान्वयन-विशिष्ट व्यवहार, या अपरिभाषित व्यवहार पर भी निर्भर हो सकता है। यह अंतर्निहित प्रकारों के बारे में या प्लेटफ़ॉर्म की समाप्ति के बारे में धारणा बना सकता है। यहां तक कि अच्छी तरह से लिखे गए सॉफ़्टवेयर के पास आपके चुने हुए टूलचैन पर उपलब्ध न होने वाले गैर-मानक एक्सटेंशन पर निर्भर रहने के अलावा कोई विकल्प नहीं हो सकता है, या ऐसा हो सकता है क्योंकि केवल अवधि के भीतर पोर्टेबिलिटी परत को जोड़ने के लिए समय बिताने की आवश्यकता नहीं थी मूल परियोजना।
अंततः, आपको लेखक / विक्रेता से पूछना होगा कि स्रोत कोड किसके लिए लिखा गया है। यदि वे दावा करते हैं कि यह विशेष रूप से खिलाफ लिखा गया है, तो Visual Studio 2015, और Windows API सुविधाओं की आवश्यकता है, आपको संभवतः उसी के साथ रहना चाहिए। लेकिन अगर वे दावा करते हैं कि यह पोर्टेबल, मानक C ++ है, तो आपको जो भी संकलक पसंद है, उसका उपयोग करें। सुनिश्चित करें कि आपके खरीद समझौते में एक समर्थन व्यवस्था शामिल है, ताकि विक्रेता के झूठ बोलने पर आपको मुफ्त मदद मिल सके।
क्या यह आवश्यक है कि हम खरीदे गए कोड के समान C ++ के संस्करण का उपयोग करें? यदि यह 2014 का उपयोग नहीं कर रहा है, तो हम इसकी कुछ विशेषताओं का उपयोग करना चाह सकते हैं, लेकिन यदि अलग-अलग संस्करणों को मिलाकर कुछ समस्याएं हो सकती हैं, तो नहीं।
शायद। शायद।
C ++ 03 अधिकांश भाग के लिए आगे-संगत है, इसलिए यदि कोड C ++ 03 है, तो आपको समस्या होने की संभावना नहीं है। (हालांकि कुछ ट्विक की आवश्यकता हो सकती है।)
लेकिन C ++ 11 और C ++ 14 में शुरू की गई विशेषताएं पिछड़े-संगत नहीं हैं इसलिए यदि विक्रेता ने कहा, C ++ 11 लैंबडास का उपयोग किया है, और आप C ++ 03 संकलक में उनके कोड का निर्माण करने का प्रयास करते हैं, जो अभी जीता है 'काम नहीं है।
सिद्धांत रूप में, निश्चित रूप से, यह विशेष रूप से भाषा संस्करण के लिए महत्वपूर्ण नहीं है, लेकिन यह समझ में नहीं आता है कि संकलक के विभिन्न संस्करण अलग-अलग ऑब्जेक्ट कोड, संभवतः समय के अंतर के लिए अग्रणी आदि उत्पन्न करेंगे।
पूर्ण रूप से। यदि अपेक्षित परिणाम प्राप्त करने के लिए कोड एक विशिष्ट कार्यान्वयन पर निर्भर करता है, तो यह विक्रेता पर निर्भर है कि वह आपको जिम्मेदार ठहराए और आपको सूचित करे। चूंकि हम वास्तविक दुनिया में रहते हैं, इसलिए मैं उन्हें मेहनती होने और उन्हें पहले पूछने की सलाह देता हूं।
और मैं यह कहूंगा कि दूसरों ने क्या कहा है: यह सुनिश्चित करें कि आपके पास किसी प्रकार का समर्थन सहारा है, ताकि यदि वे इन सवालों के जवाबों को गलत तरीके से प्रस्तुत करें (चाहे जानबूझकर या अन्यथा) आप परिणामी लागत को समाप्त नहीं करते हैं।