2012-04-26 16 views
5

मैंने कई स्थानों को देखा है जो निर्यात/आयात कीवर्ड का उपयोग करके एडा/सी/सी ++ के बीच संचार संभव है। अगर एडा फ़ंक्शन एक सामान्य है तो क्या होगा; क्या यह भी संभव है?क्या आप सी ++ में एडा जेनेरिक फ़ंक्शंस निर्यात कर सकते हैं?

मेरी समस्या यह है कि मुझे कुछ विरासत कोड का पुन: उपयोग करने की आवश्यकता है और हमारे पास कई सामान्य विज्ञापन कार्य हैं। आने वाली नई परत सी ++ में लिखी जाएगी और मैं उम्मीद कर रहा हूं कि इन मौजूदा एडा जेनेरिक कार्यों को सी ++ रैपर में निर्यात करने में सक्षम हो। (दरअसल, यदि कार्य वैश्विक नहीं हैं तो मुझे एक और परत की आवश्यकता होगी लेकिन अभी इसे कभी भी याद नहीं करें।)

यदि यह संभव नहीं है तो मुझे केवल अलग-अलग प्रकार के विशिष्ट एडीए फ़ंक्शंस बनाने की आवश्यकता होगी जो बदले में कॉल करें जेनेरिक इस दृष्टिकोण के बारे में कोई विचार?

मैं निश्चित रूप से एडा प्रोग्रामिंग के साथ एक नोब हूं इसलिए मेरी अज्ञानता बहाना। सहायता के लिए धन्यवाद।

उत्तर

4

एक छोटा एडी पैकेज लिखें जिसका विनिर्देश exported उपप्रोग्राम है और जिसका शरीर §B.3 Interfacing with C and C++ में उपलब्ध प्रकारों का उपयोग करके उन उपप्रोग्राम को तुरंत चालू करता है। सी पक्ष पर adainit() और adafinal() पर कॉल करने के लिए उपेक्षा न करें। अधिक here

+0

मैं सोच रहा था कि यह वही है जो मुझे करना है। मैं बस उम्मीद कर रहा था कि प्रत्येक जेनेरिक के लिए एन संख्याओं को लिखने के बजाय भाषा की अनुमति दी जाए। धन्यवाद :) – JSolberg

+1

समस्या इस मामले में [सिर्फ] एडी नहीं है, लेकिन सी ++ कहने का कोई तरीका नहीं है "हे, कंपाइलर, यह एक पैकेज/इकाई/मॉड्यूल/टेम्पलेट है," क्या वहां है? यह देखना दिलचस्प होगा कि पूरे पैकेज को निर्यात करने का कोई तरीका था, लेकिन इसमें अन्य भाषाओं को शामिल किया जाएगा ए) उन पैकेजों की मांग करना, और बी) वास्तव में पैकेजों की सुविधाएं हैं। – Shark8

-2

मैं परिचित w/ada नहीं हूं, लेकिन आप निर्यात किए गए कार्यों को कॉल करने में सक्षम होना चाहिए (माना जाता है कि एडा संकलक कुछ भी प्रतिकूल नहीं करता है)। फ़ंक्शन नामों का निरीक्षण करने के लिए आपको एडी ऑब्जेक्ट फ़ाइल (संकलन का परिणाम) डंप करने का प्रयास करना चाहिए।

+2

समस्या एडा के जेनेरिक (सी ++ टेम्पलेट के समतुल्य) के साथ है। – AProgrammer

+0

यह बिल्कुल प्रासंगिक नहीं लगता है। उन्होंने मिश्रित भाषा प्रोग्रामिंग के बारे में पूछा। तथ्य यह है कि उसे सी कोड से ऑब्जेक्ट उन्मुख निर्माण का आह्वान करने की आवश्यकता है, यह अप्रासंगिक है। निर्यात किए गए मज़ेषण का आह्वान करने के लिए, उसे केवल मज़ेदार हस्ताक्षर – user590028

+2

तक पहुंच की आवश्यकता होनी चाहिए, यह बहुत प्रासंगिक है; आप C++ या C से C++ टेम्पलेट फ़ंक्शन को कॉल नहीं कर सकते हैं, आप केवल एक त्वरित टेम्पलेट फ़ंक्शन को कॉल कर सकते हैं। इसी तरह, आप एक सामान्य उपप्रोग्राम को कॉल नहीं कर सकते; आपको पहले इसे तुरंत चालू करना होगा, और फिर तत्काल कॉल करना होगा। –

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