Ralat LNK2005: Berbilang Takrif 'k'
Apabila membangunkan aplikasi konsol Win32 dengan berbilang fail sumber C, anda mungkin menghadapi ralat LNK2005 , menunjukkan bahawa pembolehubah telah ditakrifkan beberapa kali.
Punca Ralat
Dalam kod yang diberikan, kedua-dua A.cpp dan B.cpp mentakrifkan pembolehubah global bernama 'k'. Ini melanggar peraturan definisi C one, yang menyatakan bahawa setiap simbol (fungsi, pembolehubah, dll.) mesti ditakrifkan sekali sahaja dalam program.
Menyelesaikan Isu
Terdapat beberapa cara untuk menyelesaikan ralat ini:
1. Menggunakan Ruang Nama Tanpa Nama (untuk Pembolehubah Diperlukan dalam Berbilang Fail)
Jika anda memerlukan pembolehubah yang sama dalam kedua-dua fail cpp, gunakan ruang nama tanpa nama untuk mengelakkan berbilang definisi:
<code class="cpp">namespace { int k; }</code>
2. Menggunakan 'luaran' (untuk Pembolehubah Dikongsi Merentas Fail)
Jika anda perlu berkongsi pembolehubah merentas berbilang fail, isytiharkan pembolehubah itu sebagai 'luaran' dalam fail pengepala dan takrifkannya dalam satu fail cpp sahaja :
<code class="cpp">// A.h extern int k; // A.cpp int k = 0; // B.cpp #include "A.h" // Use `k` anywhere in B.cpp</code>
Dengan mengikuti pendekatan ini, anda boleh menyelesaikan ralat LNK2005 dan memastikan bahawa setiap simbol ditakrifkan sekali sahaja dalam program anda.
Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat LNK2005: Berbilang Takrifan \'k\' dalam Aplikasi Konsol Win32 Saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!