हेडर फाइल और #include निर्देश
C में हेडर फाइल्स (.h) पूर्वनिर्धारित फंक्शन्स, मैक्रोज़ और घोषणाएँ रखती हैं। #include प्रीप्रोसेसर निर्देश इन्हें प्रोग्राम में सम्मिलित करता है।
दो बार शामिल करने पर व्यवहार
जब एक ही हेडर फाइल को दो बार #include किया जाता है, तो दूसरी बार इसे अनदेखा (ignore) कर दिया जाता है। ऐसा इसलिए होता है क्योंकि मानक हेडर फाइल्स में इन्क्लूड गार्ड (Include Guards) होते हैं।
इन्क्लूड गार्ड का उदाहरण (stdio.h के अंदर)
#ifndef _STDIO_H
#define _STDIO_H
// हेडर फाइल की सामग्री
int printf(const char*, ...);
int scanf(const char*, ...);
#endif
पहली बार _STDIO_H परिभाषित नहीं होता, इसलिए सामग्री सम्मिलित होती है। दूसरी बार यह पहले से परिभाषित होता है, इसलिए #ifndef ब्लॉक छोड़ दिया जाता है।
उदाहरण प्रोग्राम
#include <stdio.h>
#include <stdio.h> // दूसरी बार - अनदेखा होगा
int main() {
int a, b, c;
float avg;
printf("a, b, c के मान दर्ज करें: ");
scanf("%d %d %d", &a, &b, &c);
int sum = a + b + c;
avg = sum / 3.0;
printf("औसत = %.2f\n", avg);
return 0;
}
महत्वपूर्ण बिंदु
- यदि आप अपनी खुद की हेडर फाइल बनाते हैं, तो आपको स्वयं इन्क्लूड गार्ड लगाना चाहिए।
- बिना गार्ड के दो बार शामिल करने पर पुनर्परिभाषा त्रुटि (redefinition error) आ सकती है।
- आधुनिक कंपाइलर
#pragma onceभी सपोर्ट करते हैं जो सरल विकल्प है।
खुद की हेडर फाइल के लिए गार्ड पैटर्न
// myheader.h
#ifndef MYHEADER_H
#define MYHEADER_H
void myFunction();
#endif