首頁 >後端開發 >C++ >為什麼我在 Win32 控制台應用程式中收到錯誤 LNK2005:\'k\' 的多重定義?

為什麼我在 Win32 控制台應用程式中收到錯誤 LNK2005:\'k\' 的多重定義?

Susan Sarandon
Susan Sarandon原創
2024-11-01 00:19:28509瀏覽

Why Am I Getting Error LNK2005: Multiple Definitions of 'k' in My Win32 Console Application?

錯誤LNK2005:'k' 的多重定義

當開發具有多個C 原始檔的Win32 控制台應用程式時,您可能會遇到錯誤LNK2005 ,表示一個變數被定義了多次。

錯誤原因

在給定的程式碼中,A.cpp和B.cpp都定義了一個全域變數名為「k」。這違反了 C one 定義規則,該規則規定每個符號(函數、變數等)只能在程式中定義一次。

解決問題

有幾種方法可以解決此錯誤:

1.使用無名命名空間(用於多個檔案中需要的變數)

如果兩個cpp 檔案中都需要相同的變量,請使用無名命名空間來防止多個定義:

<code class="cpp">namespace
{
    int k;
}</code>

2 。使用'extern' (用於跨文件共享的變量)

如果需要跨多個文件共享一個變量,請在頭文件中將該變量聲明為'extern' 並僅在一個cpp文件中定義它:

<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>

透過遵循這些方法,您可以解決錯誤LNK2005 並確保每個符號在程式中只定義一次。

以上是為什麼我在 Win32 控制台應用程式中收到錯誤 LNK2005:\'k\' 的多重定義?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn