# हेडर, मल्टी-फाइल प्रोग्राम और कंपाइलेशन — C प्रोग्रामिंग

Source: https://www.geekswithgeeks.com/hi/c/c-headers-compilation

> #include, हेडर गार्ड और लिंकर कैसे मिलकर काम करते हैं।

## #include फाइल को अंदर चिपकाता है

`#include <stdio.h>` (एंगल ब्रैकेट — सिस्टम हेडर) या `#include "myheader.h"` (कोट्स — आपकी अपनी फाइलें) कंपाइल होने से पहले उस फाइल का टेक्स्ट उसी जगह चिपका देता है।

## हेडर गार्ड दोहरे समावेश को रोकते हैं

अगर दो फाइलें एक ही हेडर को `#include` करती हैं, तो गार्ड सुनिश्चित करता है कि उसकी सामग्री केवल एक बार प्रोसेस हो, जिससे "redefined" त्रुटियाँ नहीं आतीं।

```c
#ifndef MATH_UTILS_H
#define MATH_UTILS_H

int add(int a, int b);
int sub(int a, int b);

#endif // MATH_UTILS_H
```

## कंपाइल -> ऑब्जेक्ट फाइल -> लिंक

हर `.c` फाइल अलग से `.o` (ऑब्जेक्ट) फाइल में कंपाइल होती है; फिर **लिंकर** सभी `.o` फाइलों और लाइब्रेरी कोड को जोड़कर एक executable बनाता है।

## कई फाइलें कंपाइल करना

सभी सोर्स दिए जाने पर gcc एक ही कमांड में कंपाइलिंग और लिंकिंग साथ करता है।

```bash
gcc main.c math_utils.c -o app
./app
```
