Penjelasan terperinci tentang file header dan file sumber di C ++
1. Mode Kompilasi C ++
Secara umum, dalam program C ++, hanya ada dua jenis file - file .cpp dan file .h. Di antara mereka, file .cpp disebut file sumber C ++, dan kode sumber C ++ ditempatkan di dalamnya; Sementara file .h disebut file header C ++, dan kode sumber C ++ ditempatkan di dalamnya.
Bahasa C ++ mendukung "kompilasi terpisah". Dengan kata lain, semua konten program dapat dibagi menjadi bagian yang berbeda dan ditempatkan dalam file .cpp yang berbeda. Hal -hal dalam file .cpp relatif independen. Saat menyusun (kompilasi), Anda tidak perlu berkomunikasi dengan file lain. Anda hanya perlu menautkan dengan file target lainnya setelah mengkompilasinya ke dalam file target. Misalnya, fungsi global "batal a () {}" didefinisikan dalam file a.cpp, dan fungsi ini perlu dipanggil dalam file b.cpp. Meski begitu, file a.cpp dan b.cpp tidak perlu mengetahui keberadaan satu sama lain, tetapi dapat mengkompilasinya secara terpisah. Setelah menyusunnya ke dalam file target, tautkannya, dan seluruh program dapat dijalankan.
Bagaimana ini dicapai? Dari perspektif program penulisan, ini sangat sederhana. Dalam file b.cpp, sebelum memanggil fungsi "batal a ()", nyatakan fungsi "batal a ();" Pertama. Ini karena kompiler akan menghasilkan tabel simbol saat menyusun b.cpp. Simbol seperti "batal a ()" yang tidak dapat dilihat akan disimpan dalam tabel ini. Saat menghubungkan lagi, kompiler akan mencari definisi simbol ini di file objek lainnya. Setelah ditemukan, program ini dapat dihasilkan dengan lancar.
Perhatikan bahwa ada dua konsep yang disebutkan di sini, satu adalah "definisi" dan yang lainnya adalah "Deklarasi". Sederhananya, "definisi" berarti menggambarkan simbol dengan cara yang lengkap dan lengkap: apakah itu variabel atau fungsi, jenis apa yang dikembalikannya, parameter apa yang dibutuhkan, dll. "Deklarasi" hanya menyatakan keberadaan simbol ini, yaitu, memberi tahu kompiler bahwa simbol ini ditentukan dalam file lain. Saya akan menggunakannya terlebih dahulu. Saat Anda menautkan, pergi ke tempat lain untuk mencari tahu apa itu. Saat mendefinisikan, Anda harus mendefinisikan simbol (variabel atau fungsi) sepenuhnya sesuai dengan sintaks C ++, dan ketika menyatakan, Anda hanya perlu menulis prototipe simbol ini. Perlu dicatat bahwa simbol dapat dinyatakan beberapa kali di seluruh program, tetapi harus didefinisikan hanya sekali. Bayangkan saja, jika ada dua definisi simbol yang berbeda, siapa yang harus didengarkan kompiler?
Mekanisme ini membawa banyak manfaat bagi programmer C ++, dan juga mengarah pada metode penulisan program. Pertimbangkan bahwa jika ada fungsi yang sangat umum digunakan "void f () {}" yang akan dipanggil dalam banyak file .cpp di seluruh program, maka kita hanya perlu mendefinisikan fungsi ini dalam satu file dan menyatakan fungsi ini di file lain. Fungsi mudah ditangani, dan itu hanya berarti satu kalimat untuk menyatakannya. Namun, bagaimana jika ada terlalu banyak fungsi, seperti sekelompok fungsi matematika, ada ratusan dari mereka? Dapatkah setiap programmer memastikan untuk secara akurat menulis dan menuliskan semua fungsi dalam bentuknya?
2. Apa itu file header
Jelas, jawabannya tidak mungkin. Tetapi ada cara yang sangat sederhana untuk membantu pemrogram menyimpan kesulitan mengingat begitu banyak prototipe fungsi: kita dapat menulis semua pernyataan deklarasi ratusan fungsi terlebih dahulu dan memasukkannya ke dalam file. Ketika programmer membutuhkannya, salin semua hal ini ke dalam kode sumbernya.