# मैक्रो और कंडीशनल कंपाइलेशन — C प्रोग्रामिंग

Source: https://www.geekswithgeeks.com/hi/c/c-macros

> कंपाइलेशन शुरू होने से पहले टेक्स्ट प्रतिस्थापन।

## #define एक टेक्स्ट स्वैप है

**प्रीप्रोसेसर** कंपाइलर से पहले चलता है और मैक्रो नामों को बिना सोचे उनके टेक्स्ट से बदल देता है — इस चरण में कोई टाइप जाँच नहीं होती।

## ऑब्जेक्ट-जैसे और फंक्शन-जैसे मैक्रो

ऑपरेटर-प्राथमिकता बग से बचने के लिए मैक्रो पैरामीटर को कोष्ठक में रखें।

```c
#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` ब्लॉक के अंदर का कोड तभी शामिल होता है जब मैक्रो परिभाषित हो — यह डिबग लॉगिंग या प्लेटफ़ॉर्म-विशिष्ट कोड के लिए आम है।

```c
#define DEBUG

#ifdef DEBUG
    printf("debug: x = %d\n", x);
#endif
```
