সর্বশেষ আপডেট: 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ব্যবহার করুন।