C++ में मैक्रो फ़ंक्शंस

C Mem Maikro Fanksansa



C++ प्रोग्रामिंग में, मैक्रो फ़ंक्शंस कोड लचीलेपन और दक्षता को बढ़ाने के लिए एक शक्तिशाली उपकरण हैं। एक मैक्रो स्रोत कोड के भीतर एक प्लेसहोल्डर के रूप में कार्य करता है, वास्तविक संकलन प्रक्रिया से पहले प्रीप्रोसेसर द्वारा इसे इसके संबंधित मान के साथ प्रतिस्थापित किया जाता है। मैक्रोज़ का आरंभीकरण #define कमांड का उपयोग करके किया जाता है, और उन्हें #undef कमांड का उपयोग करके हटाया जा सकता है। ये मैक्रोज़ डेवलपर्स को पुन: प्रयोज्य कोड स्निपेट को परिभाषित करने, दोहराए जाने वाले कार्यों को आसानी से व्यवस्थित करने के लिए सशक्त बनाते हैं। यह आलेख मैक्रो फ़ंक्शंस के विवरण, उनकी विशेषताओं, उपयोग के मामलों और संभावित लाभों पर प्रकाश डालता है।

मैक्रो फ़ंक्शन क्या है?

मैक्रो फ़ंक्शन C++ कोड का एक छोटा, पुन: प्रयोज्य घटक है जो #define निर्देश के साथ लिखा जाता है। मैक्रो एक पाठ्य प्रतिस्थापन तंत्र के रूप में कार्य करता है जहां कोड के भीतर इसके नाम की किसी भी घटना को प्रीप्रोसेसर चरण के दौरान इसके परिभाषित कोड ब्लॉक के साथ बदल दिया जाता है। मैक्रो फ़ंक्शंस दोहराए जाने वाले कार्यों, पैरामीटरयुक्त संचालन और कोड को संभालने के लिए विशेष रूप से फायदेमंद होते हैं जिन्हें विभिन्न परिदृश्यों में अनुकूलन की आवश्यकता होती है।







मैक्रो फ़ंक्शन का सिंटैक्स:

मैक्रो फ़ंक्शन को परिभाषित करने के सिंटैक्स में मैक्रो नाम, एक पैरामीटर सूची (यदि कोई हो), और कोड ब्लॉक के बाद #define निर्देश का उपयोग करना शामिल है। यहाँ एक बुनियादी उदाहरण है:



# स्क्वायर को परिभाषित करें ( वर्ग ) ( ( वर्ग ) * ( वर्ग ) )



इस उदाहरण में, 'वर्ग' एक मैक्रो फ़ंक्शन है जो एकल पैरामीटर 'वर्ग' लेता है और उसके वर्ग की गणना करता है। दोहरे कोष्ठक सही मूल्यांकन सुनिश्चित करते हैं, खासकर जब पैरामीटर में अभिव्यक्तियाँ शामिल होती हैं।





अब, C++ प्रोग्राम में मैक्रो फ़ंक्शन का उपयोग कब करना है यह जानने के लिए उदाहरण अनुभाग पर चलते हैं।

C++ मैक्रो फ़ंक्शंस के अनुप्रयोग

मैक्रो फ़ंक्शंस विभिन्न प्रोग्रामिंग परिदृश्यों में महत्व रखते हैं, जो डेवलपर्स को एक बहुमुखी कोड अनुकूलन और सरलीकरण उपकरण प्रदान करते हैं। आइए कुछ आकर्षक उपयोग मामलों का पता लगाएं जो C++ में मैक्रो फ़ंक्शंस की प्रभावशीलता को उजागर करते हैं।



परिदृश्य 1: कोड पुन: प्रयोज्यता

मैक्रो फ़ंक्शंस उन परिदृश्यों में उत्कृष्टता प्राप्त करते हैं जहां प्रोग्राम में एक विशेष कोड पैटर्न दोहराया जाता है। मैक्रो में कोड को इनकैप्सुलेट करके, डेवलपर्स आसानी से इसे पुन: उपयोग कर सकते हैं, एक क्लीनर और अधिक रखरखाव योग्य कोड को बढ़ावा दे सकते हैं। निम्नलिखित दिए गए प्रोग्राम में, हम दी गई संख्याओं के एकाधिक योगों की गणना करने के लिए मैक्रो फ़ंक्शन का उपयोग करेंगे। आइए पहले कोड देखें और फिर इसे विस्तार से समझाएं:

#शामिल करें

नेमस्पेस एसटीडी का उपयोग करना;



#परिभाषित करें ADD(ab, yz) ((ab) + (yz))



मुख्य प्रवेश बिंदु ( ) {



int sum1 जोड़ें ( 9 , 3 ) ;

अदालत << '9 और 3 का योग है =' << योग1 << एंडल;



int sum2 जोड़ें ( ग्यारह , 7 ) ;

अदालत << '11 और 7 का योग है =' << योग2 << एंडल;



int यहाँ सीडी = 8 , डब्ल्यूएक्स = 4 ;



पूर्णांक योग3 = जोड़ें ( सीडी , डब्ल्यूएक्स ) ;

अदालत << '8 और 4 का योग है =' << योग3 << एंडल;



वापस करना 0 ;

}

'#include ' हेडर फ़ाइल इनपुट और आउटपुट ऑपरेशन जैसे कॉउट और सिने के लिए फ़ंक्शन प्रदान करती है। '#define ADD(ab, yz) ((ab) + (yz))' ADD नामक मैक्रो फ़ंक्शन को परिभाषित करता है जो दो तर्क लेता है, 'ab' और 'yz'। मैक्रो प्रीप्रोसेसर निर्देश का उपयोग करता है जो संकलन के दौरान ADD(ab, yz) की किसी भी घटना को वास्तविक अभिव्यक्ति (ab) + (yz) से बदलने के लिए #define है। प्रोग्राम का प्रवेश बिंदु, जहां कोड निष्पादन शुरू होता है, 'int main()' है।

ADD मैक्रो का उपयोग करके, हम दो योगों की गणना करते हैं: एक है 9 और 3 और दूसरा है 11 और 7. हम इन दो योगों के लिए संख्याओं को सीधे ADD मैक्रो में भेज देते हैं। हालाँकि, तीसरे योग के लिए, हम वेरिएबल्स का उपयोग करके संख्या पास करते हैं। संख्या 8 और 4 को क्रमशः 'सीडी' और 'डब्ल्यूएक्स' वेरिएबल्स में संग्रहीत किया जाता है, जिन्हें बाद में एडीडी मैक्रो में भेज दिया जाता है।

'int sum1 = ADD(9, 3);' लाइन 'sum1' वेरिएबल को 9 और 3 का योग निर्दिष्ट करती है। संकलन के दौरान मैक्रो ADD(9, 3) को 9 + 3 से बदल दिया जाता है, जिसके परिणामस्वरूप 8 का मान 'sum1' में संग्रहीत हो जाता है। 'int sum2 = ADD(11, 7);' लाइन विभिन्न तर्कों के साथ मैक्रो का पुन: उपयोग दर्शाती है। 'योग2' में 11 और 7 का योग रखा जाता है.

अंत में, “int cd = 8, wx = 4; int sum3 = ADD(cd, wx);' उदाहरण चर के साथ मैक्रो का उपयोग दिखाता है। 'सीडी' और 'डब्ल्यूएक्स' के मानों को एडीडी के लिए तर्क के रूप में उपयोग किया जाता है जिसके परिणामस्वरूप योग 'योग 3' में निर्दिष्ट किया जाता है। यहाँ आउटपुट है:

जैसा कि आप इस उदाहरण में देख सकते हैं, ADD मैक्रो फ़ंक्शन दो पैरामीटर लेता है। यह अतिरिक्त ऑपरेशन करता है, विभिन्न मूल्यों और चर के साथ इसके उपयोग को प्रदर्शित करता है, और परिणामों को कंसोल पर प्रिंट करता है। इस मैक्रो फ़ंक्शन का उपयोग करके, हम पूरे प्रोग्राम में अतिरिक्त तर्क का आसानी से पुन: उपयोग कर सकते हैं। यह एक स्वच्छ और अधिक रखरखाव योग्य कोड को बढ़ावा देता है, खासकर जब कई स्थानों पर एक ही अतिरिक्त ऑपरेशन की आवश्यकता होती है।

परिदृश्य 2: पैरामीटरयुक्त संचालन

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

#शामिल करें

नेमस्पेस एसटीडी का उपयोग करना;



#MAXI(ab, yz) ((ab) > (yz) को परिभाषित करें? (ab) : (yz))



मुख्य प्रवेश बिंदु ( ) {



int max1 = MAXI ( 9 , 3 ) ;

अदालत << अधिकतम1 << '9 और 3 के बीच अधिकतम है' << अंतः << एंडल;



पूर्णांक kl = 12 , अनुसूचित जनजाति = 9 ;

int max2 = MAXI ( केएल, सेंट ) ;

अदालत << मैक्स2 << 'के बीच अधिकतम है' << पर << ' और ' << अनुसूचित जनजाति << अंतः << एंडल;



int max3 = MAXI ( 3 * केएल, बुध + 5 ) ;

अदालत << अधिकतम3 << '3* के बीच अधिकतम है' << पर << ' और ' << अनुसूचित जनजाति << '+5' << एंडल;



वापस करना 0 ;

}



मैक्रो परिभाषा: #MAXI(ab, yz) ((ab) > (yz) को परिभाषित करें? (ab) : (yz))

यह पंक्ति MAXI नामक एक मैक्रो फ़ंक्शन को परिभाषित करती है जो दो पैरामीटर, 'ab' और 'yz' लेता है, और टर्नरी ऑपरेटर का उपयोग करके दो मानों में से अधिकतम लौटाता है।

स्थिरांक, int max1 = MAXI(9, 3) के साथ मैक्रो फ़ंक्शन का उपयोग करके, हम 9 और 3 के बीच अधिकतम संख्या की गणना करते हैं, और परिणाम 'max1' में संग्रहीत होता है। फिर परिणाम कंसोल पर प्रदर्शित होता है।

'केएल' और 'एसटी' वेरिएबल्स के साथ मैक्रो फ़ंक्शन का उपयोग करके, इन वेरिएबल्स में दो नंबर संग्रहीत किए जाते हैं जिन्हें फिर उनके बीच अधिकतम संख्या खोजने के लिए MAXI मैक्रो फ़ंक्शन में पास किया जाता है। मैक्रो फ़ंक्शन को 'kl' और 'st' वेरिएबल्स के साथ पुन: उपयोग किया जाता है जो दर्शाता है कि यह स्थिरांक और वेरिएबल्स दोनों के साथ काम करता है। मैक्रो फ़ंक्शन को (3 * केएल और एसटी + 5) अभिव्यक्ति पर लागू किया जाता है, जो विभिन्न इनपुट प्रकारों के लिए इसकी अनुकूलन क्षमता को प्रदर्शित करता है। जब आप यह कोड चलाते हैं, तो आपको निम्न जैसा आउटपुट देखना चाहिए:

दिए गए उदाहरण में, MAXI मैक्रो फ़ंक्शन दो संख्याओं के बीच अधिकतम मान निर्धारित करता है। मुख्य फ़ंक्शन इस मैक्रो के उपयोग को निरंतर मानों, चर और यहां तक ​​कि अभिव्यक्तियों के साथ प्रदर्शित करता है। फिर परिणाम कंसोल पर प्रदर्शित होता है। यह दर्शाता है कि MAXI मैक्रो फ़ंक्शन विभिन्न इनपुट मानों और अभिव्यक्तियों के लिए कैसे अनुकूल होता है, अधिकतम मान खोजने के लिए एक सामान्य तंत्र प्रदान करता है।

परिदृश्य 3: सशर्त संकलन

मैक्रोज़ संकलन के दौरान कोड के कुछ हिस्सों को चालू या बंद करने में सहायक होते हैं। यह प्लेटफ़ॉर्म-विशिष्ट कोड को शामिल करने या फ़ीचर टॉगल को प्रबंधित करने के लिए मूल्यवान है।

#शामिल करें

#DEBUG_MODE परिभाषित करें

मुख्य प्रवेश बिंदु ( ) {
#ifdef डिबग_मोड
std::cout << 'अरे, कलसूम! डिबग मोड सक्षम है।' << std::endl;
#अगर अंत

वापस करना 0 ;
}

इस उदाहरण में, '#define DEBUG_MODE' लाइन DEBUG_MODE नामक मैक्रो को परिभाषित करती है। यदि यह पंक्ति टिप्पणी रहित है, तो इसका मतलब है कि डिबग मोड सक्षम है। यदि इस पर टिप्पणी की जाती है, तो डिबग मोड अक्षम हो जाता है। '#ifdef DEBUG_MODE' निर्देश जाँचता है कि DEBUG_MODE मैक्रो परिभाषित है या नहीं। यदि इसे परिभाषित किया गया है (टिप्पणी नहीं की गई है), तो #ifdef और #endif के भीतर कोड को संकलन के दौरान शामिल किया जाएगा। यदि इसे परिभाषित नहीं किया गया है (टिप्पणी की गई है), तो कोड के उस हिस्से को बाहर कर दिया जाएगा।

यह सशर्त संकलन तकनीक विभिन्न संकलन सेटिंग्स के आधार पर कोड विविधताओं को प्रबंधित करने के लिए शक्तिशाली है। इसका उपयोग आमतौर पर डिबगिंग के लिए किया जाता है जहां डिबग-विशिष्ट कोड केवल जरूरत पड़ने पर शामिल किया जाता है, और इसे संबंधित मैक्रो को परिभाषित या टिप्पणी करके आसानी से चालू या बंद किया जा सकता है। निम्नलिखित आउटपुट देखें:

जैसा कि आप देख सकते हैं, #ifdef और #endif के बीच का कोड निष्पादित किया गया है और कंसोल पर प्रिंट किया गया है, जिसमें 'अरे, कलसूम!' प्रदर्शित हो रहा है। डिबग मोड सक्षम है” संदेश। मैक्रो फ़ंक्शंस कोडबेस में लगातार परिवर्तन करने की प्रक्रिया को सरल बनाते हैं। यदि संशोधन की आवश्यकता है, तो मैक्रो परिभाषा को बदलने से यह सुनिश्चित होता है कि जहां भी मैक्रो का उपयोग किया जाता है, परिवर्तन समान रूप से लागू होता है।

निष्कर्ष

निष्कर्ष में, C++ में मैक्रो फ़ंक्शंस कोड लचीलेपन और दक्षता को बढ़ाने के लिए एक शक्तिशाली तंत्र प्रस्तुत करते हैं। डेवलपर्स कोड ब्लॉक को एनकैप्सुलेट करने, पुन: प्रयोज्यता को बढ़ावा देने और दोहराए जाने वाले कार्यों को सुव्यवस्थित करने के लिए #define निर्देश का लाभ उठा सकते हैं। मैक्रो फ़ंक्शंस के सिंटैक्स, उपयोग के मामलों और फ़ायदों को समझने से प्रोग्रामर को अपने कोडबेस को अनुकूलित करने और एक स्वच्छ और अधिक रखरखाव योग्य C++ प्रोग्राम को बढ़ावा देने के लिए एक मूल्यवान टूल से लैस किया जाता है। विचारशील अनुप्रयोग और सर्वोत्तम प्रथाओं के पालन के माध्यम से, मैक्रो फ़ंक्शंस डेवलपर के टूलकिट का अभिन्न अंग बन जाते हैं जो कोड दक्षता और रखरखाव में योगदान देता है।