प्रोग्रामिंग की दुनिया में, मैक्रोज़ दोहराए जाने वाले कार्यों को करने का एक सुविधाजनक तरीका प्रदान करते हैं। हालाँकि, एक ऐसा मैक्रो बनाने का प्रयास जो किसी अन्य मैक्रो के तर्कों को दोहराता हो, चुनौतियों का कारण बन सकता है। आइए जानें कि इस बाधा को कैसे दूर किया जाए और पुनरावर्ती मैक्रोज़ के दायरे में प्रवेश किया जाए।
पुनरावर्ती मैक्रोज़ का उपयोग मैक्रो में पारित तर्कों की सूची को पार करने के लिए किया जा सकता है। हालाँकि, यह दृष्टिकोण त्रुटि-प्रवण हो सकता है क्योंकि इसके परिणामस्वरूप अनंत पुनरावृत्ति हो सकती है। इसे संबोधित करने के लिए, हम तर्क सूची के अंत को इंगित करने के लिए एक विशेष अंत मार्कर () पेश करते हैं।
एमएपी मैक्रो पुनरावर्ती प्रक्रिया के लिए प्रवेश बिंदु के रूप में कार्य करता है। यह अंतिम मार्कर को प्रारंभ करता है और उपयोगकर्ता-परिभाषित ऑपरेशन को पहले तर्क पर लागू करता है। MAP_NEXT मैक्रो प्रत्येक बाद के तर्क की जांच करता है और निर्णय लेता है कि रिकर्सन जारी रखना है या इसे समाप्त करना है।
रिकर्सिव MAP0 और MAP1 मैक्रोज़ तर्क सूची के माध्यम से पुनरावृत्ति के लिए जिम्मेदार हैं। MAP0 मौजूदा तर्क पर ऑपरेशन लागू करता है और खुद को अगले तर्क के साथ कॉल करता है, जबकि MAP1 शेष तर्कों की जांच करता है और या तो रिकर्सन जारी रखता है या अंतिम मार्कर लौटाता है।
एमएपी मैक्रो को प्रभावी ढंग से उपयोग करने के लिए, इसे परिभाषित करना महत्वपूर्ण है अंतिम मार्कर () और सुनिश्चित करें कि इसे सूची में अंतिम तर्क के रूप में रखा गया है। उपयोगकर्ता-परिभाषित ऑपरेशन प्रदान करके, आप प्रत्येक मैक्रो तर्क पर मनमाना कार्य कर सकते हैं। PRINT(a) printf(#a ": %d", a)
MAP मैक्रो का उपयोग करके, हम मैक्रो की सूची में PRINT लागू कर सकते हैं तर्क:
#define PRINT(a) printf(#a ": %d", a)
इसका परिणाम इसके समान होगा:
MAP(PRINT, a, b, c)
पुनरावर्ती मैक्रोज़ की शक्ति के माध्यम से, हमने प्रभावी ढंग से मैक्रो तर्कों पर पुनरावृत्ति करने का एक तरीका बनाया है, जिससे गतिशील और लचीली कोड पीढ़ी के लिए नई संभावनाएं खुल रही हैं।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3