錯誤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中文網其他相關文章!