エラー LNK2005: 'k' の複数の定義
複数の C ソース ファイルを使用して Win32 コンソール アプリケーションを開発すると、エラー LNK2005 が発生する場合があります。 、変数が複数回定義されていることを示します。
エラーの原因
指定されたコードでは、A.cpp と B.cpp の両方がグローバル変数を定義しています「k」という名前。これは、各シンボル (関数、変数など) はプログラム内で 1 回だけ定義する必要があるという C の 1 つの定義ルールに違反します。
問題の解決
このエラーを解決するには、いくつかの方法があります:
1.無名ネームスペースの使用 (複数のファイルで必要な変数の場合)
両方の cpp ファイルで同じ変数が必要な場合は、無名ネームスペースを使用して複数の定義を防止します:
<code class="cpp">namespace { int k; }</code>
2. 'extern' の使用 (ファイル間で共有される変数の場合)
複数のファイル間で変数を共有する必要がある場合は、ヘッダー ファイルで変数を 'extern' として宣言し、1 つの 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 を解決し、各シンボルがプログラム内で 1 回だけ定義されるようにすることができます。
以上がWin32 コンソール アプリケーションでエラー LNK2005: Multiple Definitions of \'k\' が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。