पाठ 32 / 36
मैक्रो और कंडीशनल कंपाइलेशन
कंपाइलेशन शुरू होने से पहले टेक्स्ट प्रतिस्थापन।
#define एक टेक्स्ट स्वैप है
प्रीप्रोसेसर कंपाइलर से पहले चलता है और मैक्रो नामों को बिना सोचे उनके टेक्स्ट से बदल देता है — इस चरण में कोई टाइप जाँच नहीं होती।
ऑब्जेक्ट-जैसे और फंक्शन-जैसे मैक्रो
ऑपरेटर-प्राथमिकता बग से बचने के लिए मैक्रो पैरामीटर को कोष्ठक में रखें।
#define MAX_SIZE 100
#define SQUARE(x) ((x) * (x))
int arr[MAX_SIZE];
printf("%d\n", SQUARE(3 + 2)); // 25, not 11
Output:
25
कंडीशनल कोड के लिए #ifdef
#ifdef ब्लॉक के अंदर का कोड तभी शामिल होता है जब मैक्रो परिभाषित हो — यह डिबग लॉगिंग या प्लेटफ़ॉर्म-विशिष्ट कोड के लिए आम है।
#define DEBUG
#ifdef DEBUG
printf("debug: x = %d\n", x);
#endif