2008-11-17 23 views

उत्तर

5

यह आपके द्वारा इच्छित किसी भी पाठ को उत्पन्न कर सकता है, जिसमें सी ++ कोड शामिल है।

+0

हाँ। मुझे लगता है मूर्ख सवाल। हालांकि मैंने देखा कि आप निर्दिष्ट कर सकते हैं कि टेम्पलेट भाषा या तो वीबी या सी # है। यह संभवतः टेम्पलेट के आउटपुट के स्वचालित संकलन से संबंधित है? – mackenir

+0

आपके टेम्पलेट्स सी # या वीबी का उपयोग करके उत्पन्न होते हैं लेकिन मुझे नहीं लगता कि आउटपुट के साथ इसका कोई संबंध नहीं है। –

7

थोड़ा लंबा जवाब अभी तक मुझे लगता है कि कुछ मिल सकती है यह दिलचस्प

मैं कहूंगा कि टी -4

साथ सी ++ उत्पन्न करने के लिए कुछ है कि सी पहले से ही की तरह साथ MetaProgramming करने के लिए उपकरण है ++ मुंहतोड़ जवाब हो सकता है उत्कृष्ट है:

प्रीप्रोसेसर

पूर्वप्रक्रमक और उच्च क्रम मैक्रो आप somewha प्राप्त कर सकते हैं का उपयोग करना टी आप टी -4 के साथ क्या क्या कर सकते हैं, लेकिन मैं कहना है कि टी -4 के कुछ बहुत ठोस लाभ हैं:

  1. टी -4 से उत्पन्न कोड डिबग करने के लिए आसान है और समझते हैं
  2. MetaProgramming साथ टी -4 पूर्वप्रक्रमक के साथ की तुलना में आसान है। पूर्वप्रक्रमक अधिकतम/मिनट की तरह मैक्रो आसान पर्याप्त कर सकते हैं लेकिन जब हम मॉडल संचालित टेम्पलेट्स के बारे में बात करना मुश्किल
  3. टी -4 यह आसान टेम्पलेट्स विकसित करने के लिए कर रही है पूर्वप्रक्रमक से अधिक शक्तिशाली है हो जाता है
  4. टी -4 के भाग के रूप क्रियान्वित किया जा सकता प्रक्रिया का निर्माण या मांग पर

आंशिक टेम्पलेट विशेषज्ञता

मैं आंशिक टेम्पलेट विशेषज्ञता चालें प्यार करते हो, लेकिन मैं अनुभव प्यार करता है हर कोई उन्हें बनाए रखने से बोलते हैं।

मैंने हमेशा रखरखाव बढ़ाने के प्रयास में कोड अनावश्यकता को कम करने का प्रयास किया। इसके अतिरिक्त मैं संभव होने पर रन-टाइम त्रुटियों पर संकलन-समय त्रुटियों को प्राथमिकता देता हूं। तो आंद्रेई अलेक्जेंड्रेसकू द्वारा आधुनिक सी ++ पढ़ने के बाद मैंने सोचा कि मुझे उत्तर मिला है।

मैंने इस पुस्तक से प्रेरित एक घटक लिखा जो महान काम करता था, फिर मैं छुट्टी पर गया। जब मैं वापस आया तो टीम ने घटक को फेंक दिया था और परंपरागत तकनीकों का उपयोग करके खुद को फिर से लिखा था। इसमें अधिक कोड था, बग्गीर था और साथ ही साथ प्रदर्शन नहीं किया था, हालांकि वे यह नहीं समझ पाए कि घटक को कार्यक्षमता कैसे जोड़नी है जिसे मैंने लिखा था और निर्धारित किया था कि उन्हें ऐसा करना था। कुछ भी बचाया नहीं जा सकता है। ये भी स्मार्ट लड़के थे।

क्या वे ऐसा करने में गलत थे? रखरखाव के मामले में मैं कहूंगा कि उन्होंने सही विकल्प किया है, भले ही यह मुझे परेशान करता है।

इस anechdote के साथ मेरा मुद्दा यह है कि टी -4 आंशिक टेम्पलेट विशेषज्ञता चाल के कुछ लाभ यह है:

  1. टी -4 से उत्पन्न कोड डिबग करने के लिए आसान है और समझते हैं
  2. टी -4 सरल
  3. टी -4 अधिक है शक्तिशाली
  4. टी 4 को बिल्ड-प्रोसेस या ऑन-डिमांड
  5. का निष्पादित किया जा सकता है यदि रखरखाव टी 4 टेम्पलेट के आसपास अपना सिर प्राप्त कर सकते हैं तो वे अभी भी कोड बचा सकते हैं (माई शुरू करें उत्पन्न कोड प्राप्त करना और टेम्पलेट को फेंकना)। ऊपर उपरोक्त में यह संभव नहीं था।

निश्चित रूप से सी ++ मेटाप्रोग्रामिंग प्रीप्रोसेसर और आंशिक टेम्पलेट विशेषज्ञता का संयोजन है।

कमियां

निश्चित रूप से टी -4 के साथ कमियां हैं;

  1. यह विजुअल स्टूडियो विशिष्ट (या मोनो विशिष्ट) है। हालांकि जेनरेट कोड को निश्चित रूप से जीसीसी और अन्य द्वारा संकलित करने के लिए बनाया जा सकता है।
  2. यह गैर मानक
  3. विजुअल स्टूडियो सी ++ प्रोजेक्ट्स टी 4 का समर्थन नहीं कर रहा है जो मुझे कोड frmo उत्पन्न करने के लिए एक डमी .NET प्रोजेक्ट का उपयोग करने के लिए मजबूर करता है।

सभी में

सभी अप रैपिंग मैं ब्याज उन्नत MetaProgramming सी ++ Preprocessor या प्रकार प्रणाली (मैं सरल कार्य यद्यपि के लिए उन्हें इस्तेमाल करते हैं) के साथ फैंसी चाल का उपयोग कर कर खो दिया है और के लिए टी -4 पर निर्भर करता है है कि इन दिनों।

यदि कोई सी ++ में इसे कैसे करना है, इस पर नमूना में रुचि रखते हैं तो आप InteractiveGraphics देख सकते हैं। यह सरल ग्राफिक्स करने के लिए सी #, वीबी, पावरशेल और स्मॉलबासिक के लिए एक लाइब्रेरी है। वहां मैं .NET और C++ के बीच संदेश भेजने के लिए सभी एपीआई और बॉयलरप्लेट कोड उत्पन्न करने के लिए टी 4 का उपयोग करता हूं (यदि मैं इसे टाल सकता हूं तो मैं सी ++/सीएलआई का उपयोग नहीं करता सब) एपीआई का वर्णन मॉडल से। एक नई विधि जोड़ना मॉडल को विस्तारित करने और सभी temlate फ़ाइलों को पुन: उत्पन्न करने के रूप में सरल है, तो मैं सी ++ में एक अमूर्त विधि लागू करता हूं और मजेदार सामान करता हूं।

+0

धन्यवाद - टी 4 का उपयोग करके सी ++ उत्पन्न करने का एक उदाहरण हां :) के साथ मेरे प्रश्न का बहुत अधिक जवाब देता है। – mackenir

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