अंतिम अपडेट: 26 Feb, 2026

जब आप C++ प्रोग्राम लिखते हैं, विशेष रूप से बड़े प्रोजेक्ट्स में, कोड को कई फ़ाइलों में व्यवस्थित करना पठनीयता और रखरखाव के लिए आवश्यक होता है। यह आमतौर पर हेडर फ़ाइलों का उपयोग करके किया जाता है, जिनके एक्सटेंशन .h या .hpp होते हैं। लेकिन इन दोनों में क्या अंतर है, और आपको कौन सा उपयोग करना चाहिए?
इस लेख में, हम .h और .hpp फ़ाइलों के बीच अंतर को समझेंगे, उनका इतिहास देखेंगे, और सर्वोत्तम प्रथाओं पर मार्गदर्शन प्रदान करेंगे।
C++ में हेडर फ़ाइलों को समझना
हेडर फ़ाइलों में फ़ंक्शनों, क्लासों, स्थिरांकों और मैक्रोज़ के घोषणाएँ होती हैं जिन्हें आप कई स्रोत फ़ाइलों में शामिल कर सकते हैं। इन फ़ाइलों को फिर .cpp (C++ स्रोत) फ़ाइलों में #include निर्देश के माध्यम से शामिल किया जाता है।
हेडर फ़ाइलों की सामान्य सामग्री
- क्लास परिभाषाएँ
- फ़ंक्शन घोषणाएँ
- स्थिरांक परिभाषाएँ
- मैक्रोज़
- टेम्प्लेट (कुछ मामलों में)
.h फ़ाइलें
.h फ़ाइल क्या है?
.h फ़ाइलें पारंपरिक हेडर फ़ाइलें हैं और पहली बार C प्रोग्रामिंग भाषा में व्यापक रूप से उपयोग की गई थीं। इन्हें अभी भी C और C++ दोनों प्रोजेक्ट्स में इंटरफ़ेस घोषित करने के लिए उपयोग किया जाता है।
उपयोग का उदाहरण:
// mathutils.h
#ifndef MATHUTILS_H
#define MATHUTILS_H
int add(int a, int b);
int subtract(int a, int b);
#endif
फायदे:
- सार्वभौमिक रूप से पहचानी जाती हैं (C और C++ दोनों में उपयोग होती हैं)।
- उन प्रोजेक्ट्स के लिए उपयुक्त हैं जिनमें C और C++ दोनों कोड शामिल हैं।
नुकसान:
- C++ प्रोजेक्ट्स में यह अस्पष्टता पैदा कर सकती है कि फ़ाइल C‑स्टाइल है या C++‑स्टाइल।
.hpp फ़ाइलें
.hpp फ़ाइल क्या है?
.hpp फ़ाइलें विशेष रूप से C++ के लिए हेडर फ़ाइलें हैं। ये .h फ़ाइलों जैसी ही कार्य करती हैं, लेकिन यह स्पष्ट रूप से संकेत करती हैं कि हेडर C++ कोड के लिए है।
उपयोग का उदाहरण:
// vectorutils.hpp
#ifndef VECTORUTILS_HPP
#define VECTORUTILS_HPP
#include <vector>
std::vector<int> filter_even(const std::vector<int>& input);
#endif
फायदे:
- स्पष्ट रूप से दर्शाता है कि फ़ाइल C++ कोड के लिए है।
- C और C++ को मिलाते समय भ्रम से बचाता है।
- मिश्रित‑भाषा प्रोजेक्ट्स या सख्त नामकरण नियमों का पालन करने वाली टीमों के लिए उपयोगी।
नुकसान:
- पुराने कोडबेस में थोड़ा कम सामान्य।
- कुछ लेगेसी सिस्टम जो
.hकी अपेक्षा करते हैं, उन्हें पहचान नहीं मिलती।
.h बनाम .hpp: मुख्य अंतर
| विशेषता | .h फ़ाइल | .hpp फ़ाइल |
|---|---|---|
| भाषा संबंध | C और C++ | केवल C++ |
| परंपरा या नियम? | परंपरा | परंपरा |
| C++ प्रोजेक्ट्स में उपयोग | सामान्य | स्पष्टता के लिए कुछ लोग पसंद करते हैं |
| टेम्प्लेट समर्थन | हाँ | हाँ |
| कोड अस्पष्टता | मिश्रित‑भाषा प्रोजेक्ट्स में संभव | कम संभावना |
.h और .hpp चुनने के लिए सर्वोत्तम प्रथाएँ
नीचे कुछ सामान्य दिशानिर्देश दिए गए हैं जो आपको चयन करने में मदद करेंगे:
.h का उपयोग करें यदि:
- आप ऐसा कोड लिख रहे हैं जो C और C++ दोनों के साथ संगत होना चाहिए।
- आप ऐसे लेगेसी कोड को बनाए या विस्तारित कर रहे हैं जो पहले से ही
.hका उपयोग करता है।
.hpp का उपयोग करें यदि:
- आप स्पष्ट करना चाहते हैं कि फ़ाइल केवल C++ के लिए है।
- आप केवल C++ प्रोजेक्ट में काम कर रहे हैं या C++‑विशिष्ट सुविधाओं जैसे क्लास, टेम्प्लेट और नेमस्पेस का उपयोग कर रहे हैं।
सामान्य प्रोजेक्ट संरचनाएँ
.h के साथ उदाहरण:
project/
├── main.cpp
├── mathutils.h
└── mathutils.cpp
.hpp के साथ उदाहरण:
project/
├── main.cpp
├── vectorutils.hpp
└── vectorutils.cpp
दोनों संरचनाएँ वैध हैं; अंतर मुख्यतः स्पष्टता और टीम की प्राथमिकताओं में है।
निष्कर्ष
.h और .hpp के बीच चयन मुख्यतः परंपरा का मामला है, न कि कार्यक्षमता का। दोनों का उद्देश्य समान है: कई C++ स्रोत फ़ाइलों में इंटरफ़ेस और साझा कोड घोषित करना।
हालाँकि, C++‑विशिष्ट कोड के लिए .hpp का उपयोग करने से आपके इरादे स्पष्ट होते हैं और बड़े कोडबेस में भ्रम कम होता है—विशेषकर जब कई भाषाएँ शामिल हों। मिश्रित‑भाषा या लेगेसी प्रोजेक्ट्स में अभी भी .h उपयुक्त हो सकता है।
मुख्य निष्कर्ष:
जब आप यह संकेत देना चाहते हैं कि यह केवल C++ कोड है तो
.hppका उपयोग करें — यदि आप ऐसे वातावरण में काम कर रहे हैं जहाँ C और C++ दोनों मिलते हैं, तो.hका उपयोग करें।