Rumah > pembangunan bahagian belakang > C++ > Mengapa Kemasukan Berbilang Fail Pengepala Menyebabkan Ralat 'Definisi Berbilang' dalam C ?

Mengapa Kemasukan Berbilang Fail Pengepala Menyebabkan Ralat 'Definisi Berbilang' dalam C ?

Barbara Streisand
Lepaskan: 2024-12-27 17:00:11
asal
850 orang telah melayarinya

Why Does Multiple Inclusion of a Header File Cause

Berbilang Takrifan Pembolehubah dalam C

Dalam C , mentakrifkan pembolehubah berbilang kali boleh membawa kepada ralat penyusunan. Isu ini boleh timbul apabila berbilang fail menyertakan fail pengepala, menghasilkan berbilang takrifan pembolehubah yang sama.

Pertimbangkan senario berikut:

// FileA.cpp
#include "FileA.h"

int main()
{
    hello();
    return 0;
}
Salin selepas log masuk
// FileA.h
#ifndef FILEA_H_
#define FILEA_H_
void hello();
#endif
Salin selepas log masuk
// FileB.cpp
#include "FileB.h"
Salin selepas log masuk
// FileB.h
#ifndef FILEB_H_
#define FILEB_H_

int wat;
void world();
#endif
Salin selepas log masuk

Semasa menyusun kod ini, anda mungkin menghadapi ralat "takrifan berbilang wat'" kerana kedua-dua FileA.h dan FileB.h mentakrifkan pembolehubah wat`.

Penyelesaian:

Untuk menyelesaikan isu ini, kita boleh menggunakan kata kunci luaran. Kata kunci ini mengisytiharkan pembolehubah sebagai wujud di tempat lain dalam program dan menghalangnya daripada ditakrifkan beberapa kali.

// FileB.h
extern int wat;
Salin selepas log masuk
// FileB.cpp
int wat = 0;
Salin selepas log masuk

Dengan mengisytiharkan wat sebagai extern dalam FileB.h, kami pada dasarnya memberitahu pengkompil bahawa takrifan wat wujud dalam fail lain (FileB.cpp dalam kes ini). Ini memastikan bahawa tidak akan terdapat berbilang takrifan pembolehubah dan membolehkan kompilasi diteruskan tanpa ralat.

Atas ialah kandungan terperinci Mengapa Kemasukan Berbilang Fail Pengepala Menyebabkan Ralat 'Definisi Berbilang' 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