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
Mary-Kate Olsenasal
2024-12-04 07:09:11971semak imbas

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;

Dalam FileB.cpp, tentukan pembolehubah seperti biasa:

int wat = 0;

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!

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