Header Ads

ad728
  • New Updates

    Macros with Arguments


     

    Macros with Arguments

    Macros का प्रयोग करके हम और अधिक जटिल Statements लिख सकते हैं | जैसे

    
    #define CUBE (x) (x*x*x)
    

    यहां CUBE (x) में लिखा गया Argument एक Formal Argument है | जब इस Macro को Use किया जाता है तब हम जो Argument CUBE Macro के कोष्टक में देते हैं वह Expand होकर x*x*x हो जाता है | जैसे

    
    int Iside = 20 total;
    total = CUBE (Iside);
    

    जब हम इस Statement को लिखते हैं तो Program Compile होने से पहले निम्नानुसार Expand होता है और  total में 8000 Return करता है |

    
    total = (Iside * Iside * Iside);
    

    हम यदि चाहें तो CUBE Macro को निम्नानुसार भी Use कर सकते हैं –

    
    int total , Iside = 10 , rside = 5;
    total = CUBE (Iside + rside)
    

    ये Statement निम्नानुसार Expand होगा |

    
    total = (Iside + rside * Iside + rside * Iside +rside);
    

    हम देख सकते हैं कि ये Expanding सही Result Generate नहीं करेगा क्योंकि rside का  Iside से पहले गुण होगा जबकि हम चाहते हैं कि पहले Iside rside का जोड़ हो | इस स्थिति में हमें निम्नानुसार CUBE Macro को Modify करना होगा |

    
    #define CUBE (x) ((x)*(x)*(x))
    

    अब यदि हम इस Macro को अपने Program में use करें तो ये निम्नानुसार Expand होगा |

    
    total = (( Iside + rside)*(Iside + rside)*(Iside+rside));
    

    अब इस Macro से जो Result प्राप्त होगा वह सही होगा | हम निम्नानुसार कुछ अन्य Macro Define कर सकते हैं जो कि हमारे लिए उपयोगी होते हैं

    
    #define MAX(A,B) (((a) > (b))? (a):(b))
    #define MIN(A,B)  (((a) < (b)) ? (a) : (b))
    #define ABS(x)      (((x) > 0) ? (x) : (-(x)))
    

    No comments

    Post Top Ad

    ad728

    Post Bottom Ad

    ad728