Rumah > pembangunan bahagian belakang > C++ > Mengapa Saya Perlu Sertakan Fail Pengepala (.h) Daripada Fail Pelaksanaan (.cpp) dalam C ?

Mengapa Saya Perlu Sertakan Fail Pengepala (.h) Daripada Fail Pelaksanaan (.cpp) dalam C ?

Barbara Streisand
Lepaskan: 2024-11-26 01:06:12
asal
545 orang telah melayarinya

Why Should I Include Header (.h) Files Instead of Implementation (.cpp) Files in C  ?

Termasuk Fail .cpp: Kes Pertindihan Fungsi

Apabila membangun dalam C , biasanya disyorkan untuk memasukkan pengepala (.h) fail untuk kefungsian, bukannya fail pelaksanaan (.cpp). Termasuk fail .cpp boleh membawa kepada ralat disebabkan pertindihan fungsi.

Mari kita pertimbangkan contoh kod berikut:

// main.cpp
#include <iostream>
#include "foop.h" // Header file containing the function declaration

int main() {
  std::cout << foo(42) << std::endl;
  return 0;
}

// foop.h
int foo(int a); // Function declaration

// foop.cpp
int foo(int a) { // Function definition
  return ++a;
}
Salin selepas log masuk

Kod ini akan disusun dan dijalankan dengan betul kerana fail pengepala (.h) hanya termasuk pengisytiharan fungsi foo(), manakala takrifan disediakan dalam fail .cpp yang berasingan.

Walau bagaimanapun, jika kita menggantikan kemasukan fail pengepala dalam main.cpp dengan kemasukan fail .cpp:

// main.cpp
#include <iostream>
#include "foop.cpp" // Implementation file containing the function definition
Salin selepas log masuk

Ini akan mengakibatkan ralat pengkompil:

multiple definition of foo(int)
first defined here
Salin selepas log masuk

Ini kerana prapemproses menyalin kandungan fail yang disertakan ke dalam fail sumber utama. Termasuk fail .cpp dengan berkesan menyalin definisi fungsi foo() ke dalam main.cpp, yang menghasilkan takrifan pendua bagi fungsi tersebut.

Untuk mengelakkan pertindihan fungsi, adalah disyorkan untuk memasukkan fail pengepala (.h) hanya untuk pengisytiharan dan fail .cpp untuk definisi. Ini membantu memastikan fungsi ditakrifkan sekali sahaja dalam program.

Atas ialah kandungan terperinci Mengapa Saya Perlu Sertakan Fail Pengepala (.h) Daripada Fail Pelaksanaan (.cpp) dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan