Kemas Kini Terakhir: 26 Feb, 2026

Tajuk - .h vs .hpp: Apa Perbezaannya dan Mana Yang Patut Digunakan?

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

CiriFail .hFail .hpp
Persatuan BahasaC dan C++C++ sahaja
Konvensi atau Peraturan?KonvensiKonvensi
Penggunaan dalam Projek C++BiasaDipilih oleh sesetengah untuk kejelasan
Sokongan TemplatYaYa
Kekaburan KodMungkin dalam projek berbilang bahasaKurang 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 .hpp apabila anda ingin menandakan “ini hanya kod C++” — tetap gunakan .h jika anda bekerja dalam persekitaran yang menggabungkan C dan C++.

Lihat Juga