पास करें मुझे एक एडीए प्रोग्राम से डेटा के 2 टुकड़े प्रोसेसिंग के लिए कुछ सी ++ कोड में पास करने की आवश्यकता है।एडी से सी ++: एक हस्ताक्षरित 64-बिट मान
- डेटा - डबल।
- समय - हस्ताक्षर 64 बिट्स।
मैं एडीए में एक प्रक्रिया है कि मेरी सी ++ एक Long_Float (सी में डबल ++) और पूर्णांक का उपयोग कर विधि के साथ काम किया बनाने के लिए कर रहा था (सी में पूर्णांक ++ नहीं 64-बिट जाहिर है, हालांकि)। मैं निम्नलिखित कोड (कोड मुझ पर नहीं तो वाक्य रचना थोड़ा दूर हो सकता है) का इस्तेमाल किया:
procedure send_data (this : in hidden_ptr; data : in Long_Float; time : in Integer);
pragma import (CPP, send_data, "MyClass::sendData");
अब
कि काम कर रहा है कि, मैं पूर्ण 64-बिट के लिए समय का विस्तार करने के कोशिश कर रहा हूँ और आदर्श चाहते हैं सी ++ पक्ष पर लंबे समय तक एक हस्ताक्षरित है। मुझे लगता है कि मेल खाते हैं कि इतने मैं अपने खुद के प्रकार बनाते समय एडीए में किसी भी प्रकार के नहीं दिख रहा है:
type U64 is mod 2 ** 64;
जब मेरे send_data विधि के साथ उस प्रकार का उपयोग कर मैं कह वहाँ एक करने के लिए उस प्रकार मैप करने के लिए कोई संभव तरीके हैं कोई त्रुटि मिलती है सी ++ प्रकार (उन पंक्तियों के साथ कुछ, फिर मेरे पास कोड या सटीक त्रुटि वाक्यांश नहीं है)।
क्या एडी में उपयोगकर्ता परिभाषित प्रकार को C++ में पास करने का कोई तरीका है? शायद एडा में एक और प्रकार है जो मैं एक हस्ताक्षरित 64-बिट मान के रूप में उपयोग कर सकता हूं जो काम करेगा? क्या मेरे यू 64 प्रकार के पते को सी ++ विधि के पैरामीटर के रूप में पास करने का कोई तरीका है, अगर यह आसान है? मैं हरी पहाड़ियों adamulti संकलक v3.5 का उपयोग कर रहा हूँ (एडीए के लिए बहुत नया, यकीन नहीं है कि वह जानकारी मदद करता है या नहीं)। उदाहरणों की बहुत सराहना की जाएगी!
'mod 2 ** 64' सही होना चाहिए। जब मैं जीएनएटी के साथ उस प्रकार का उपयोग करके अपना उदाहरण संकलित करता हूं, तो यह शिकायत नहीं करता है। शायद आपका एडा संकलक ऐसा नहीं सोचता कि सी ++ (या सी ++ संकलक इसे लक्षित करता है) 64-बिट हस्ताक्षरित प्रकार का समर्थन करता है; 2011 सीएसओ मानक तक मानक सी ++ को 'लंबे समय तक हस्ताक्षरित' नहीं मिला। –
@ किथ थॉम्पसन - बह! कीथ के जवाबों की इन अच्छी टिप्पणियों को बनाएं, इसलिए मेरे अपवॉट्स का मतलब कुछ है, मैं उन पर सही ढंग से टिप्पणी कर सकता हूं, और अगर वे उत्तर देने का अंत हो जाते हैं तो उन्हें स्वीकार किया जा सकता है। –
आप 'प्रगमा कन्वेंशन (सीपीपी, यू 64) जोड़ने का प्रयास कर सकते हैं; '। –