पाठ 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