Mengapa Saya Mendapat \'Ralat LNK2005: \'int k\' Sudah Ditakrifkan\' dalam Aplikasi Konsol Win32 Saya?

DDD
Lepaskan: 2024-10-30 08:39:27
asal
919 orang telah melayarinya

Why Am I Getting

Ralat LNK2005: "int k" Sudah Ditakrifkan

Apabila memautkan aplikasi konsol Win32 dengan berbilang fail C, ralat "ralat LNK2005: "int k" (?a@@3HA) yang telah ditakrifkan dalam A.obj" mungkin timbul. Ralat ini berlaku apabila pembolehubah dengan nama yang sama ditakrifkan dalam berbilang fail.

Dalam contoh yang diberikan, kedua-dua A.cpp dan B.cpp mentakrifkan pembolehubah k. Mengikut peraturan satu definisi, setiap pembolehubah atau fungsi global mesti mempunyai definisi tunggal. Mempunyai pelbagai takrifan membawa kepada kekaburan dan ralat pautan.

Penyelesaian:

Untuk menyelesaikan ralat ini, anda boleh menggunakan pendekatan berikut:

Gunakan Ruang Nama Tanpa Nama (Ruang Nama Tanpa Nama):

Jika pembolehubah k bertujuan untuk menjadi peribadi kepada setiap fail, gunakan ruang nama tanpa nama untuk mengelakkan perlanggaran nama simbol.

<code class="cpp">namespace 
{
    int k;
}</code>
Salin selepas log masuk

Ini mengasingkan simbol k dalam setiap fail, menghalang fail lain daripada mengakses atau mentakrifkannya semula.

Isytihar dan Takrif Pembolehubah dalam Fail Asing:

Jika anda perlu berkongsi pembolehubah k merentas berbilang fail, gunakan extern untuk mengisytiharkannya dalam fail pengepala dan mentakrifkannya dalam unit kompilasi yang berasingan.

A.h

<code class="cpp">extern int k;</code>
Salin selepas log masuk

A.cpp

<code class="cpp">#include "A.h"
int k = 0;</code>
Salin selepas log masuk

B.cpp

<code class="cpp">#include "A.h"

// Use `k` anywhere in the file</code>
Salin selepas log masuk

Dengan mengisytiharkan k sebagai extern dalam fail pengepala, fail lain boleh mengakses dan menggunakannya tanpa mentakrifkannya semula.

Atas ialah kandungan terperinci Mengapa Saya Mendapat \'Ralat LNK2005: \'int k\' Sudah Ditakrifkan\' dalam Aplikasi Konsol Win32 Saya?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!