Rumah >pembangunan bahagian belakang >C++ >Mengapa Saya Tidak Boleh Sertakan Fail .cpp Seperti Saya Sertakan Fail .h dalam C ?

Mengapa Saya Tidak Boleh Sertakan Fail .cpp Seperti Saya Sertakan Fail .h dalam C ?

Linda Hamilton
Linda Hamiltonasal
2024-11-29 19:39:11704semak imbas

Why Can't I Include .cpp Files Like I Include .h Files in C  ?

Termasuk Fail .h dan .cpp: Memahami Perbezaan

Dalam pembangunan C, memasukkan fail lain ke dalam kod sumber adalah penting. Walau bagaimanapun, kemasukan fail pengepala (.h) dan fail pelaksanaan (.cpp) memerlukan sedikit pemahaman.

Pertimbangkan kod berikut:

main.cpp
#include <iostream>
#include "foop.h"  // Including the header file

int main() {
  int x = 42;
  std::cout << x << std::endl;
  std::cout << foo(x) << std::endl;
  return 0;
}
foop.h
#ifndef FOOP_H
#define FOOP_H

int foo(int a);  // Declaring the function prototype

#endif
foop.cpp
#include "foop.h"  // Including the header file, just for safety

int foo(int a) {
  return ++a;
}

Kod ini berjaya menyusun kerana kami telah memasukkan fail pengepala ("foop.h") dalam kedua-dua main.cpp dan foop.cpp.

Mengapa tidak memasukkan fail .cpp?

Sekarang, mari lihat apa yang berlaku jika kita menggantikan baris "#include "foop.h"" dalam main.cpp dengan "#include "foop.cpp":

main.cpp
#include <iostream>
#include "foop.cpp"  // Including the implementation file

Ini akan menghasilkan pengkompil ralat. Mengapa? Kerana memasukkan fail pelaksanaan akan menduplikasi kod yang terkandung dalam fail sumber semasa Dalam contoh kami, fungsi "foo" akan ditakrifkan dua kali: sekali dalam main.cpp dan sekali dalam foop.cpp pengkompil, yang membawa kepada ralat "takrif berbilang".

Kesimpulan

Oleh itu, adalah penting untuk sertakan fail pengepala (.h) dalam kedua-dua fail sumber utama dan mana-mana fail sumber tambahan yang menggunakan fungsi yang diisytiharkan (.cpp) hendaklah disertakan dalam satu fail sumber sahaja untuk mengelakkan penduaan definisi kod.

Atas ialah kandungan terperinci Mengapa Saya Tidak Boleh Sertakan Fail .cpp Seperti Saya Sertakan Fail .h dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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