Macros in c hindi
मैक्रोज़ सी प्रोग्रामिंग में बिल्ट-इन प्रीप्रोसेसर के माध्यम से एक प्रोग्रामिंग आर्ट है। सामान्य तोर पर मैक्रोज़ का उपयोग सी लैंग्वेज में कांस्टेंट डाटा टाइप, प्रोग्राम फ़ंक्शन और कोड स्निपेट एलिमेंट को डिटेल में डिफाइन करने में किया जाता है, किसी भी मैक्रोज़ कोड को सी लैंग्वेज में प्रीप्रोसेसर द्वारा डिफाइन और एक्सप्लेन किया जाता है। यदि आप सी लैंग्वेज में मैक्रोज़ को उपयोग करना चाहते है, तो आपको पहले #define प्रीप्रोसेसर डायरेक्टिव का उपयोग करके इसे डिफाइन करना होगा।
Basic Macros in C Language.
Defining Constant Macros in C Language.
यहाँ आप किसी सी प्रोग्राम में कांस्टेंट स्थिरांक एलिमेंट को डिफाइन करने के लिए मैक्रोज़ डाटा टाइप का उपयोग कर सकते है. याद रहे की मैक्रोज़ एलिमेंट को वेरिएबल से अलग करने के लिए बड़े करैक्टर में टाइप किया जाता है।
#include <stdio.h>
#define PI 3.14
#define MAXimumSIZE 1500
int main() {
printf(“\n Value of PI elements is – %f”, PI);
printf(“\n the Maximum size is – %d”, MAXimumSIZE);
return 0;
}
Defining Function Macros in C Language.
सी प्रोग्राम में आपको यदि मैक्रोज़ फ़ंक्शन-जैसे मैक्रोज़ को इनलाइन फ़ंक्शन बनाने के की जरूरत है। तो आप मैक्रोज़ के लिए आर्गुमेंट या पैरामीटर डिक्लेअर करते हैं, और फंक्शन मैक्रोज़ को प्रीप्रोसेसिंग के दौरान जगह-जगह डिफाइन करता हैं।
#include <stdio.h>
#define SQRT(p) ((p) * (p))
int main() {
int sqvalue = 9;
printf(“\n The Square root of %d is %d “, sqvalue, SQRT(sqvalue));
return 0;
}
Advanced Macros in C Language.
Macros Conditional compilation.
सी प्रोग्राम में मैक्रोज़ का उपयोग कंडीशनल प्रोग्राम संकलन के लिए किया जा सकता है, जहा आप मैक्रोज़ प्रोग्राम सोर्स कोड में कुछ पर्टिकुलर कंडीशन के अनुसार उन्हे कण्ट्रोल या मैनेज किया जाता है।
#include <stdio.h>
#define DEBUG
int main() {
int p = 2, q = 3;
#ifdef DEBUG
printf(“\n The Debug is – p = %d, q = %d\n”, p, q);
#endif
int count = p + q;
printf(“\n the count is – %d\n”, count);
return 0;
}
Include guards in C macros.
सी मैक्रोज़ प्रोग्राम में गार्ड शामिल करने से ये एक ही हेडर फ़ाइल होने वाले कई समावेशन को रोकते हैं. जिससे मैक्रोज़ प्रोग्राम संकलन एरर हो सकती हैं।
#ifndef Type header file name in capital letter
#define Type header file name in capital letter
// display current Header file contents name
#endif // Type header file name in capital letter
Variadic Macros in C Programs.
सी मैक्रोज़ प्रोग्राम में वैरिएडिक मैक्रोज़ आपको ऐसे मैक्रोज़ को डिफाइन करने की अनुमति देते हैं. जो प्रोग्राम आर्गुमेंट पैरामीटर की एक वेरिएबल एलिमेंट्स को एक्सेप्ट करते हैं।
#include <stdio.h>
#define PRINTF(format, …) printf(format, __VA_ARGS__)
int main() {
PRINTF(“\n Single digit – %d”, 1);
PRINTF(“\n Two digit number – %d, %d”, 1, 2);
return 0;
}
Disadvantages of Macros.
Macros Security Type – सी प्रोग्राम में डिक्लेअर मैक्रोज़ टाइप को टेस्ट नहीं किए जाते हैं।
Unnecessary side effects – कई बार सी प्रोग्राम में मैक्रोज़ का अप्रत्याशित व्यवहार प्रोग्राम में कई समस्या का कारण बन सकता हैं. यदि सी प्रोग्राम में मैक्रोज़ का सावधानीपूर्वक उपयोग नहीं किया जाता है, तो खासकर जब फ़ंक्शन-जैसे मैक्रोज़ के साथ पैरामीटर या आर्गुमेंट डिक्लेअर किये गए हो।
Modification Difficulty – कई बार मौजूदा सी प्रोग्राम में मैक्रो को एक्सटेंड डीबग या एरर फ्री करना अधिक कॉम्प्लिकेटेड हो जाता है।
Macros Advantage.
Always Use Macros Parentheses – हमेशा याद रखे की मैक्रोज़ वरीयता समस्याओं से बचने के लिए मैक्रो आर्गुमेंट और संपूर्ण मैक्रो डेफिनिशन को कोष्ठक में डिक्लेअर करें।
#define SQRT(p) ((p) * (p))
Limit the use of macros in C – हमेशा सी प्रोग्राम में मैक्रोज़ का ध्यान से उपयोग करें और जब मैक्रोज़ टाइप सिक्योरिटी और प्रोग्राम कोड डीबगिंग महत्वपूर्ण हो तो इनलाइन फ़ंक्शन को पहले मैक्रोज़ में प्राथमिकता दें।
inline int sqrt(int p) {
return p * p;
}
Macros Consistent Naming – हमेशा याद रखे सी प्रोग्राम में डिक्लेअर मैक्रो नामों के लिए अपरकेस करैक्टर का ही उपयोग करें। ताकि जब उन्हें वेरिएबल और फ़ंक्शन से आसानी से अलग किया जा सके।
#define MAXIMUMSIZE 1500
Macro usage examples widely used in C programs.
तो चलिए यहाँ एक सी प्रोग्राम मैक्रोज़ देखे। जिसमे कॉमन मेक्रोस कांस्टेंट, फ़ंक्शन-जैसे मैक्रो और प्रोग्राम कंडीशन संकलन सहित मैक्रो के विभिन्न उपयोगों को एक्सप्लेन किया गया हो।
#include <stdio.h>
// define Macro definitions
#define PI 3.14
#define MIN(p, q) ((p) < (q) ? (p) : (q))
#define DEBUG
// you can see Conditional compilation
#ifdef DEBUG
#define LOG(msg) printf(“DEBUG: %s\n”, msg)
#else
#define LOG(msg)
#endif
int main() {
// let Using a constant macro element
printf(“\n the Value of PI is – %f”, PI);
// here Using a function-like macro
int p = 1, q = 2;
printf(“\n The Minimum value of %d and %d is %d\n”, p, q, MIN(p, q));
// let Using a conditional compilation macro
LOG(“\n This is a debug message”);
return 0;
}