Kemas Kini Terakhir: 26 Feb, 2026

Apabila menulis program C++, terutamanya dalam projek berskala besar, menyusun kod anda ke dalam pelbagai fail adalah penting untuk kebolehbacaan dan penyelenggaraan. Ini biasanya melibatkan penggunaan fail header, yang mempunyai sambungan .h atau .hpp. Tetapi apa perbezaan antara kedua-duanya, dan mana yang patut anda gunakan?
Dalam artikel ini, kami akan menjelaskan perbezaan antara fail .h dan .hpp, menelusuri sejarahnya, dan memberikan panduan amalan terbaik.
Memahami Fail Header dalam C++
Fail header mengandungi deklarasi untuk fungsi, kelas, pemalar, dan makro yang boleh anda sertakan dalam pelbagai fail sumber. Fail-fail ini kemudian disertakan dalam fail .cpp (sumber C++) menggunakan arahan #include.
Kandungan Umum Fail Header
- Definisi kelas
- Deklarasi fungsi
- Definisi pemalar
- Makro
- Templat (dalam beberapa kes)
Fail .h
Apa itu Fail .h?
Fail .h adalah fail header tradisional dan pertama kali banyak digunakan dalam bahasa pengaturcaraan C. Ia masih digunakan dalam projek C dan C++ untuk mengisytiharkan antara muka.
Contoh Penggunaan:
// mathutils.h
#ifndef MATHUTILS_H
#define MATHUTILS_H
int add(int a, int b);
int subtract(int a, int b);
#endif
Kelebihan:
- Diiktiraf secara universal (digunakan dalam C dan C++).
- Sesuai untuk projek yang melibatkan kod C dan C++.
Kekurangan:
- Boleh menyebabkan kekaburan dalam projek C++ mengenai sama ada fail tersebut berformat C atau C++.
Fail .hpp
Apa itu Fail .hpp?
Fail .hpp adalah fail header khusus C++. Ia berfungsi sama seperti fail .h tetapi digunakan untuk menunjukkan secara jelas bahawa header tersebut ditujukan untuk kod C++.
Contoh Penggunaan:
// vectorutils.hpp
#ifndef VECTORUTILS_HPP
#define VECTORUTILS_HPP
#include <vector>
std::vector<int> filter_even(const std::vector<int>& input);
#endif
Kelebihan:
- Menunjukkan dengan jelas bahawa fail ini ditujukan untuk kod C++.
- Mengelakkan kekeliruan apabila mencampur C dan C++.
- Berguna dalam projek berbilang bahasa atau pasukan yang mengikuti konvensi penamaan ketat.
Kekurangan:
- Sedikit kurang umum dalam kod pangkalan lama.
- Tidak dikenali oleh beberapa sistem legasi yang mengharapkan
.h.
.h vs .hpp: Perbezaan Utama
| Ciri | Fail .h | Fail .hpp |
|---|---|---|
| Persatuan Bahasa | C dan C++ | C++ sahaja |
| Konvensi atau Peraturan? | Konvensi | Konvensi |
| Penggunaan dalam Projek C++ | Biasa | Dipilih oleh sesetengah untuk kejelasan |
| Sokongan Templat | Ya | Ya |
| Kekaburan Kod | Mungkin dalam projek berbilang bahasa | Kurang mungkin |
Amalan Terbaik Memilih Antara .h dan .hpp
Berikut adalah beberapa panduan umum untuk membantu anda memilih:
Gunakan .h jika:
- Anda menulis kod yang mesti serasi dengan C dan C++.
- Anda menyelenggara atau mengembangkan kod legasi yang sudah menggunakan
.h.
Gunakan .hpp jika:
- Anda ingin menjelaskan bahawa fail tersebut khusus untuk C++.
- Anda bekerja dalam projek yang hanya C++ atau menggunakan ciri khusus C++ seperti kelas, templat, dan ruang nama.
Struktur Projek Biasa
Contoh dengan .h:
project/
├── main.cpp
├── mathutils.h
└── mathutils.cpp
Contoh dengan .hpp:
project/
├── main.cpp
├── vectorutils.hpp
└── vectorutils.cpp
Kedua-dua struktur adalah sah; perbezaannya terletak pada kejelasan dan keutamaan pasukan.
Kesimpulan
Pemilihan antara .h dan .hpp lebih kepada konvensi, bukan fungsi. Kedua-duanya berfungsi untuk mengisytiharkan antara muka dan kod yang dikongsi di antara pelbagai fail sumber C++.
Walau bagaimanapun, untuk kod khusus C++, menggunakan .hpp dapat menjelaskan niat anda dengan lebih jelas dan membantu mengelakkan kekeliruan dalam kod pangkalan yang besar—terutama yang melibatkan pelbagai bahasa. Untuk projek berbilang bahasa atau legasi, .h mungkin masih menjadi pilihan.
Intipati Utama:
Gunakan
.hppapabila anda ingin menandakan “ini hanya kod C++” — tetap gunakan.hjika anda bekerja dalam persekitaran yang menggabungkan C dan C++.