Termasuk Fail Pengepala berbanding Kod Sumber
Apabila bekerja dengan berbilang fail sumber dalam program C, adalah penting untuk memahami perbezaan antara memasukkan pengepala fail (.h) dan fail kod sumber (.cpp).
Dalam contoh yang diberikan, anda mengalami ralat semasa memasukkan "foop.cpp" dan bukannya "foop.h" dalam fail main.cpp. Ini kerana fail pengepala direka bentuk khusus untuk mengisytiharkan prototaip fungsi dan maklumat lain yang diperlukan, manakala fail kod sumber mengandungi pelaksanaan fungsi sebenar.
Termasuk Fail Pengepala
Termasuk pengepala fail membenarkan pengkompil untuk mencari dan mengenali fungsi yang ditakrifkan dalam fail kod sumber lain tanpa menduplikasi definisi. Dengan memasukkan "foop.h," fail main.cpp mendapat akses kepada prototaip fungsi foo(), membolehkan program memanggilnya tanpa mengetahui butiran pelaksanaan penuh.
Termasuk Fail Kod Sumber
Sebaliknya, termasuk "foop.cpp" secara langsung akan menyalin semua kod daripada fail itu ke dalam fail main.cpp, yang membawa kepada definisi berbilang ralat. Memandangkan foo() ditakrifkan dalam foop.cpp dan main.cpp, pengkompil menjadi keliru tentang definisi yang hendak digunakan.
Cara Ia Berfungsi
Apabila anda memasukkan fail pengepala, kandungannya disalin dengan berkesan ke dalam fail kod sumber semasa. Sebagai contoh, memasukkan "foop.h" akan menghasilkan kod setara berikut dalam main.cpp:
// Header file contents int foo(int a); int main(int argc, char *argv[]) { // Rest of the main.cpp code }
Walau bagaimanapun, termasuk "foop.cpp" akan membawa kepada ini:
// Source code file contents int foo(int a){ return ++a; } int main(int argc, char *argv[]) { // Rest of the main.cpp code }
Akibat
Memasukkan fail kod sumber secara langsung boleh menyebabkan akibat yang tidak diingini, seperti sebagai:
Amalan Terbaik
Oleh itu, adalah amalan yang baik untuk memasukkan fail pengepala ( .h) apabila merujuk kepada fungsi dan pengisytiharan, dan untuk memastikan pelaksanaan kod sumber dalam fail berasingan (.cpp). Ini memastikan modulariti kod, mengelakkan ralat dan meningkatkan kebolehbacaan kod.
Atas ialah kandungan terperinci Mengapakah memasukkan fail .cpp dan bukannya fail .h dalam C membawa kepada ralat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!