Saturday, March 15.

Header Ads

Colorful+Black+Friday+Discount+Leaderboard+Ad

Macros with Arguments

Muscle+Inc.+%25282%2529

Macros%20with%20Arguments

 

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

Post Bottom Ad