का उपयोग करके मेटाप्रोग्रामिंग सी/सी ++ तो मेरे पास यह विशाल पेड़ है जो मुख्य रूप से स्ट्रिंग कुंजियों के साथ एक बड़ा स्विच/मामला है और कुंजी और मेटाडाटा के एक टुकड़े के आधार पर एक सामान्य वस्तु पर अलग-अलग फ़ंक्शन कॉल होता है।प्रीप्रोसेसर
प्रत्येक प्रविष्टि मूल रूप से इस
} else if (strcmp(key, "key_string") == 0) {
((class_name*)object)->do_something();
} else if (...
do_something
अलग आमंत्रण हो सकता है जहां की तरह दिखता है, तो मैं बस समारोह संकेत का उपयोग नहीं कर सकते हैं। इसके अलावा, कुछ कुंजियों को वस्तु को उप-वर्ग में डालने की आवश्यकता होती है।
अब, अगर मैं इसे उच्च स्तर की भाषा में कोड करना चाहता हूं, तो मैं इसे सरल बनाने के लिए लैम्बडा के शब्दकोश का उपयोग करूंगा।
ऐसा नहीं है कि मैं की तरह
case_call("key_string", class_name, do_something());
case_call(/* ... */)
कुछ को यह आसान बनाने के लिए जहां case_call
एक मैक्रो है कि पहले कोड स्निपेट के लिए इस कोड का विस्तार होगा मैक्रो का उपयोग कर सकता है मेरे लिए हुई।
हालांकि, मैं बाड़ पर बहुत अधिक हूं कि क्या इसे अच्छी शैली माना जाएगा। मेरा मतलब है, यह टाइपिंग काम को कम करेगा और कोड की ड्रवाईनेस में सुधार करेगा, लेकिन फिर यह वास्तव में मैक्रो सिस्टम का दुरुपयोग करने लगता है।
क्या आप उस सड़क पर उतरेंगे, या पूरी चीज टाइप करेंगे? और ऐसा करने के लिए आपका तर्क क्या होगा?
संपादित
कुछ स्पष्टीकरण:
इस कोड को एक सरल पटकथा एपीआई जो एक सी ++ एपीआई के रूप में सरल कुंजी-मान गुण के कई विभिन्न पहलुओं तक पहुँचता है जो गोंद परत के रूप में प्रयोग किया जाता है। संपत्तियों को सी ++ में विभिन्न तरीकों से लागू किया गया है हालांकि: कुछ में गेटर/सेटर विधियां हैं, कुछ विशेष संरचना में सेट हैं। स्क्रिप्टिंग क्रियाओं का संदर्भ सी ++ ऑब्जेक्ट्स को एक सामान्य बेस क्लास में डाला जाता है। हालांकि, कुछ क्रियाएं केवल कुछ उप-वर्गों पर उपलब्ध हैं और उन्हें नीचे डालना होगा।
सड़क के नीचे आगे, मैं वास्तविक सी ++ एपीआई बदल सकता हूं, लेकिन इस पल के लिए, इसे अपरिवर्तनीय माना जाना चाहिए। इसके अलावा, इसे एक एम्बेडेड कंपाइलर पर काम करना है, इसलिए बूस्ट या सी ++ 11 (दुखी) उपलब्ध नहीं हैं।
क्यों वोट बंद करने के लिए - यह एक बहुत अच्छा, वैध सवाल है। मुझे यहां क्या समझ नहीं आ रहा है? –
यह एक अच्छा सवाल है, लेकिन "यह सवाल हमारे प्रश्नोत्तर प्रारूप हम जवाब आम तौर पर तथ्यों, संदर्भ, या विशिष्ट विशेषज्ञता को शामिल करने की उम्मीद करना एक अच्छा फिट नहीं है,। * इस सवाल की संभावना मांगना होगा राय, बहस, तर्क, मतदान, या बढ़ाया चर्चा। * " – Fanael
यह पहले से ही +5 स्कोर पर है, इसलिए थोड़े कहता है कि दूसरों ने स्वयं को शामिल किया है, परिणाम में रुचि रखते हैं। नीचे दिया गया जवाब पहले से ही बहुत अच्छा है। –