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