エラー LNK2005、すでに定義されていますか? 質問する

エラー LNK2005、すでに定義されていますか? 質問する

Win32 コンソール アプリケーションに A.cpp と B.cpp という 2 つのファイルがあります。

どちらのファイルにも、次の 2 行のコードのみが含まれています。

#include "stdafx.h"
int k;

コンパイル時にエラーが発生する

Error   1   error LNK2005: "int k" (?a@@3HA) already defined in A.obj

何が起こっているのか分かりません。

誰かこれを私に説明してくれませんか?

ベストアンサー1

なぜこのエラーが発生するのでしょうか?

あなたは壊した一つの定義ルールそのため、リンクエラーが発生します。

推奨される解決策:


2 つの cpp ファイルで同じ名前の変数が必要な場合は、エラーを回避するために名前のない名前空間 (匿名名前空間) を使用する必要があります。

namespace 
{
    int k;
}

複数のファイル間で同じ変数を共有する必要がある場合は、 を使用する必要がありますextern

ああ

extern int k;

.cpp ファイル

#include "A.h"
int k = 0;

B.cpp

#include "A.h"

//Use `k` anywhere in the file 

おすすめ記事