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
Lepaskan: 2024-11-29 19:39:11
asal
670 orang telah melayarinya

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;
}
Salin selepas log masuk
foop.h
#ifndef FOOP_H
#define FOOP_H

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

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

int foo(int a) {
  return ++a;
}
Salin selepas log masuk

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
Salin selepas log masuk

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!

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