ホームページ  >  記事  >  バックエンド開発  >  Win32 コンソール アプリケーションでエラー LNK2005: Multiple Definitions of \'k\' が発生するのはなぜですか?

Win32 コンソール アプリケーションでエラー LNK2005: Multiple Definitions of \'k\' が発生するのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-01 00:19:28423ブラウズ

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」という名前。これは、各シンボル (関数、変数など) はプログラム内で 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。