Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Menyelesaikan Ralat Berbilang Definisi yang Disebabkan oleh Pembolehubah Global dalam C?

Bagaimanakah Saya Boleh Menyelesaikan Ralat Berbilang Definisi yang Disebabkan oleh Pembolehubah Global dalam C?

Mary-Kate Olsen
Lepaskan: 2024-12-04 07:09:11
asal
973 orang telah melayarinya

How Can I Resolve Multiple Definition Errors Caused by Global Variables in C  ?

Menyelesaikan Ralat Pelbagai Definisi: Memahami Skop Pembolehubah dalam C

Dalam C , takrifan berbilang pembolehubah boleh membawa kepada ralat penyusunan. Untuk memahami isu ini, mari kita mendalami senario yang diberikan.

Pertimbangkan empat fail yang disediakan: FileA.cpp, FileA.h, FileB.cpp dan FileB.h. Dalam FileB.h, pembolehubah global bernama wat diisytiharkan sebagai int wat;. Walau bagaimanapun, semasa penyusunan, pengkompil mengesan berbilang takrifan wat.

Ralat ini timbul kerana wat pembolehubah ditakrifkan dalam kedua-dua FileB.h dan FileB.cpp. Secara lalai, C meletakkan pembolehubah global dalam skop global, yang dikongsi merentas semua unit kompilasi. Apabila berbilang takrifan pembolehubah yang sama wujud, pengkompil tidak dapat menentukan takrifan yang hendak digunakan.

Untuk menyelesaikan isu ini, seseorang boleh memanfaatkan konsep pengisytiharan hadapan. Teknik ini membolehkan kita mengisytiharkan kewujudan pembolehubah tanpa memberikan definisinya. Dalam kes ini, ubah suai FileB.h seperti berikut:

extern int wat;
Salin selepas log masuk

Dalam FileB.cpp, tentukan pembolehubah seperti biasa:

int wat = 0;
Salin selepas log masuk

Dengan menggunakan kata kunci luaran, kami mengarahkan pengkompil bahawa wat wujud di tempat lain dalam program dan definisinya akan diberikan kemudian. Ini memastikan bahawa wat diisytiharkan dan ditakrifkan sekali sahaja.

Ringkasnya, takrifan berbilang pembolehubah berlaku apabila pembolehubah ditakrifkan lebih daripada sekali tanpa mekanisme skop yang betul. Pengisytiharan ke hadapan membantu menyelesaikan masalah ini dengan menunjukkan kewujudan pembolehubah sambil menangguhkan takrifnya kepada fail sumber tertentu.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyelesaikan Ralat Berbilang Definisi yang Disebabkan oleh Pembolehubah Global 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