2016-11-08 6 views
13

http://www.swig.org/papers/PyTutorial98/PyTutorial98.pdf यह लिंक ऊपर से आता है होने के नाते:स्विग टूल और सी ++। बहुत चालाक

enter image description here

मुझे पता है कि यह एक पुराने प्रकाशन है तो यह संभव है कि जानकारी पुरानी है।

मैं पूछना चाहूँगा:

इसका क्या मतलब है, बहुत चालाक होने के लिए "C++ के साथ ठीक काम करने के लिए यदि आप बहुत चालाक नहीं किया जा रहा है लगता है?"

क्या ऐसी स्थिति/मामला है जिसे मैं बहुत सावधान रहना चाहता हूं जहां मैं सी ++ मॉड्यूल प्रोग्रामिंग कर रहा हूं और swig उपकरण का उपयोग कर पायथन का विस्तार कर रहा हूं?

+1

अनुमान में मुझे लगता है कि वे कह रहे हैं 'यह काम करता है अगर आपकी प्रतिलिपि निर्माता ने अर्थशास्त्र की उम्मीद की है' लेकिन मैं निश्चित रूप से कुछ नहीं कह सकता। – Flexo

+0

यदि आप 'ld' के साथ' --wrap' का उपयोग करते हैं तो यह हस्तक्षेप कर सकता है, हालांकि वह सी पर भी लागू होगा – OMGtechy

उत्तर

2

स्लाइड अजीब और भ्रामक है। एसडब्ल्यूआईजी पास-बाय-वैल्यू को पास-दर-संदर्भ में परिवर्तित नहीं करता है।

double dot_product(Vector a, Vector b); 
अब सादा सी में

++ (कोई बड़ा घूँट, कोई रैपिंग) आप में के रूप में इस समारोह का उपयोग कर सकते

कहते हैं कि उदाहरण के रूप में आप सी करते ++ समारोह: मुझे एक उदाहरण से स्पष्ट करने की कोशिश करते हैं निम्न उदाहरण:

1.

Vector a = Vector(1,0); 
Vector b = Vector(0,1); 
double zero = dot_product(a, b); 

2.

Vector *a = new Vector(1,0); 
Vector *b = new Vector(0,1); 
double zero = dot_product(*a, *b); 

दोनों मामलों में, फ़ंक्शन को वास्तव में कॉल-बाय-वैल्यू का उपयोग करके उसी तरह से बुलाया जाता है।

एसडब्ल्यूआईजी सभी वस्तुओं को उस संरचना में लपेटता है जिसमें ऑब्जेक्ट में पॉइंटर होता है, इसलिए हुड के तहत SWIG सब कुछ के लिए पॉइंटर्स पास करता है, और इसलिए दूसरे उदाहरण में वाक्यविन्यास का उपयोग करता है। लेकिन किसी भी तरह से कॉल semantics का कोई रूपांतरण/परिवर्तन नहीं है।

आपके सवालों के जवाब के लिए:

इसका मतलब यह है क्या, बहुत चालाक होने के लिए "C++ के साथ ठीक काम करने के लिए यदि आप बहुत चालाक नहीं किया जा रहा है लगता है?"

मुझे कोई जानकारी नहीं है। जैसा कि एक और जवाब में कहा गया है, शायद एक मजाक।

क्या ऐसी स्थिति/मामला है जिसे मैं बहुत सावधान रहना चाहता हूं जहां मैं सी ++ मॉड्यूल प्रोग्रामिंग कर रहा हूं और स्विग टूल का उपयोग करके पायथन का विस्तार कर रहा हूं?

यह एक बहुत ही व्यापक सवाल है, और निश्चित रूप से समस्याएं हैं, विशेष रूप से स्मृति प्रबंधन से संबंधित हैं। हालांकि, यह विशेष "परिवर्तन" एक मुद्दा नहीं है।

संदर्भ के लिए, यहां relevant entry in the SWIG manual है। ध्यान दें कि इसे अलग-अलग शब्द दिया गया है: फ़ंक्शन स्वीकार्य पॉइंटर्स में परिवर्तित हो गया है। "कॉल अर्थशास्त्र" के बारे में कुछ भी नहीं कहा जाता है (क्योंकि यह एक गैर-मुद्दा है)।

3

यह पीडीएफ 7 वें अंतर्राष्ट्रीय पायथन सम्मेलन में डेविड बीज़ली द्वारा दी गई प्रस्तुति से स्लाइड की एक प्रति प्रतीत होता है। मेरा अनुमान है कि उस वाक्यांश से उसका क्या मतलब था उसका मजाक या मौखिक स्पष्टीकरण था।

C++ के साथ ठीक काम करने के लिए यदि आप बहुत चालाक

यहाँ अपने वेबसाइट के लिए एक link है तुम उसके साथ संपर्क में रहें और उसे सीधे पूछना चाहता हूँ अगर नहीं किया जा रहा है लगता है। उनका ट्विटर खाता dabeaz है, जो उससे संपर्क करने का एक बेहतर तरीका हो सकता है (या नहीं)।

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