Son Yenilənmə: 26 Fev, 2026

C++ proqramları yazarkən, xüsusilə böyük layihələrdə, kodunuzu bir neçə fayla bölmək oxunaqlılıq və baxım üçün vacibdir. Bu adətən başlıq faylları istifadə etməklə həyata keçirilir və bu fayllar .h və ya .hpp uzantılarına malikdir. Peki bu ikisi arasındakı fərq nədir və hansını istifadə etməlisiniz?
Bu məqalədə, .h və .hpp faylları arasındakı fərqləri izah edəcək, onların tarixçəsini araşdıracaq və ən yaxşı təcrübələr barədə rəhbərlik təqdim edəcəyik.
C++‑də Başlıq Fayllarını Anlamaq
Başlıq faylları funksiyalar, siniflər, sabitlər və makrolar üçün bəyannamələri saxlayır və bu bəyannamələri bir neçə mənbə faylında daxil edə bilərsiniz. Bu fayllar daha sonra .cpp (C++ mənbə) fayllarına #include göstərişi ilə daxil edilir.
Başlıq Fayllarının Ümumi Məzmunu
- Sinif tərifləri
- Funksiya bəyannamələri
- Sabit tərifləri
- Makrolar
- Şablonlar (bəzi hallarda)
.h Faylları
.h Faylı Nədir?
.h faylları ənənəvi başlıq fayllarıdır və ilk olaraq C proqramlaşdırma dilində geniş istifadə olunmuşdur. Hələ də həm C, həm də C++ layihələrində interfeysləri bəyan etmək üçün istifadə olunur.
İstifadə Nümunəsi:
// mathutils.h
#ifndef MATHUTILS_H
#define MATHUTILS_H
int add(int a, int b);
int subtract(int a, int b);
#endif
Üstünlüklər:
- Ümumdünya tanınır (həm C, həm C++‑da istifadə olunur).
- Həm C, həm C++ kodu ehtiva edən layihələr üçün uyğundur.
Çatışmazlıqlar:
- C++ layihələrində faylın C‑tərzi yoxsa C++‑tərzi olduğu barədə qeyri‑müəyyənliyə səbəb ola bilər.
.hpp Faylları
.hpp Faylı Nədir?
.hpp faylları C++‑yə məxsus başlıq fayllarıdır. Onlar .h faylları ilə eyni funksiyanı yerinə yetirir, lakin başlığın C++ kodu üçün nəzərdə tutulduğunu açıq‑aşkar göstərmək üçün istifadə olunur.
İstifadə Nümunəsi:
// vectorutils.hpp
#ifndef VECTORUTILS_HPP
#define VECTORUTILS_HPP
#include <vector>
std::vector<int> filter_even(const std::vector<int>& input);
#endif
Üstünlüklər:
- Faylın C++ kodu üçün nəzərdə tutulduğunu aydın şəkildə göstərir.
- C və C++ qarışdırıldıqda qarışıqlığı aradan qaldırır.
- Qarışıq dil layihələrində və ya sərt adlandırma qaydalarına riayət edən komandalar üçün faydalıdır.
Çatışmazlıqlar:
- Köhnə kod bazalarında bir qədər az yaygındır.
.hgözləyən bəzi köhnə sistemlər tərəfindən tanınmır.
.h vs .hpp: Əsas Fərqlər
| Xüsusiyyət | .h Faylı | .hpp Faylı |
|---|---|---|
| Dil Əlaqəsi | C və C++ | Yalnız C++ |
| Qaydalar və ya Konvensiya? | Konvensiya | Konvensiya |
| C++ Layihələrində İstifadə | Ümumi | Bəziləri tərəfindən aydınlıq üçün üstünlük verilir |
| Şablon Dəstəyi | Bəli | Bəli |
| Kod Qeyri‑müəyyənliyi | Qarışıq dil layihələrində mümkün | Az ehtimal |
.h və .hpp Arasında Seçim Üçün Ən Yaxşı Təcrübələr
Seçiminizə kömək edəcək bəzi ümumi təlimatlar:
.h‑dən istifadə edin, əgər:
- Kodun həm C, həm də C++ ilə uyğun olması lazım olduğu halda.
- Artıq
.histifadə edən köhnə kodu saxlayırsınız və ya genişləndirirsiniz.
.hpp‑dən istifadə edin, əgər:
- Faylın C++‑yə məxsus olduğunu aydınlaşdırmaq istəyirsiniz.
- Yalnız C++ layihəsində işləyirsiniz və ya siniflər, şablonlar, ad məkanları kimi C++‑yə məxsus xüsusiyyətlərdən istifadə edirsiniz.
Ümumi Layihə Strukturları
.h nümunəsi:
project/
├── main.cpp
├── mathutils.h
└── mathutils.cpp
.hpp nümunəsi:
project/
├── main.cpp
├── vectorutils.hpp
└── vectorutils.cpp
Hər iki struktur da etibarlıdır; fərq əsasən aydınlıq və komanda üstünlüklərindədir.
Nəticə
.h və .hpp arasındakı seçim əsasən konvensiya məsələsidir, funksionallıq deyil. Hər ikisi eyni məqsədə xidmət edir: interfeysləri və bir neçə C++ mənbə faylı arasında paylaşılan kodu bəyan etmək.
Ancaq C++‑yə məxsus kod üçün .hpp istifadə etmək niyyətinizi daha aydın göstərə bilər və böyük kod bazalarında, xüsusilə bir neçə dili əhatə edən layihələrdə qarışıqlığı aradan qaldıra bilər. Qarışıq dil və ya köhnə layihələr üçün isə .h hələ də uyğun ola bilər.
Əsas Nəticə:
C++‑yə məxsus kod olduğunu bildirmək üçün
.hpp‑dən istifadə edin — C və C++‑nin qarışdığı mühitlərdə işləyirsinizsə,.h‑dən istifadə edin.