Macros – The Preprocessor Directives

Macros: जो काम हम “C++” में Inline Functions का प्रयोग करके करते हैं वही काम “C” में Macros का प्रयोग करके किया जाता था। उदाहरण के लिए “C++” में एक Function जो कि दो संख्‍याओं में से बडी संख्‍या Return करता है, निम्नानुसार लिखा जा सकता है:

    int max(int a, int b)
    {
       return (a>b) ? a : b;
    }

इस Function में Ternary Operator या Conditional Operator का प्रयोग करके दो संख्‍याओं में से बडी संख्‍या को Return किया गया है। यदि a का मान b से बडा है तो Calling Function को a Return होता है अन्‍यथा b Return होता है।

एक Macro में Preprocessor Directive #define का प्रयोग किया जाता है जो कि एक Function की तरह Argument लेता है। यदि हम max() Function को Macro में Convert करना चाहें तो हम इसे निम्नानुसार Define कर सकते हैं:

#define MAX(A, B) ((A>B) ? A : B)

हम देख सकते हैं कि #define Directive सामान्‍यतया Macro के नाम व Arguments के बाद macro की Definition होती है। जब भी इस Macro को Program में कहीं पर Use करना होता है तो हम इसे निम्नानुसार Use कर सकते हैं:

cout << MAX(6,7);

ये Statement Output में 7 Print करता है। चलिए, समझने की कोशिश करते हैं कि एक Macro Program में कैसे काम करता है। जब MAX Macro को Program मे Use किया जाता है तब ये Macro Compiler पर Compile होने से पहले निम्नानुसार वहीं पर Expand हो जाता है जहां पर MAX Macro को Use किया गया है:

cout << ((6>7) ? 6 : 7);

यानी Macro उसी तरह से Program में Expand होता है जिस तरह से एक Inline Function Expand होता है। इस तरह से जब हम किसी inline Function को Call करते हैं तो Program Control उस Function में Jump नहीं करता बल्कि वह inline Function वहीं पर Expand हो जाता है जहां पर Function को Call किया गया होता है।

हालांकि Macros का प्रयोग करना उचित नहीं होता है क्योंकि Macro कभी Type Checking नहीं करता। यदि हम किसी Macro में Integer के स्थान पर Float प्रकार का मान दे दें तो भी Macro हमें कोई Error नहीं देगा। Macro के सभी Variables को हमें कोष्‍ठक में बन्द करना भी जरूरी होता है। इसलिए किसी भी प्रकार की परेशानी से बचने के लिए हमें Macro को Use नहीं करना चाहिए बल्कि Macro के स्थान पर inline Functions को Use करना चाहिए। (Macros – Wiki)

Member Functions in C++
Function Overloading in C++

CPP Programming Language in Hindiये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook C++ Programming Language in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी। 

C++ Programming Language in Hindi | Page: 666 | Format: PDF

BUY NOW GET DEMO REVIEWS