1
1>knightTour_Main.obj : error LNK2005: "int p" (?p@@3HA) already defined in Definitions.obj
1>knightTour_Main.obj : error LNK2005: "int q" (?q@@3HA) already defined in Definitions.obj

エラー^

これは、ヘッダーファイルで定義したコードです。

#include<iostream>
using namespace std;
int p,q;

int f( int,  int,const int [][8],const int [][8], int [],int []);

私はもう試した

extern int p,q;

しかし、その後、このエラーが発生します

1>knightTour_Main.obj : error LNK2001: unresolved external symbol "int p" (?p@@3HA)
1>knightTour_Main.obj : error LNK2001: unresolved external symbol "int q" (?q@@3HA)

他に何かお勧めはありますか?ありがとうございました。

4

1 に答える 1

1

をに置き換えるのint p,q;は正しいですが、正確に 1 つの .cpp ファイルextern int p,q;に含める必要もありますint p,q;

ヘッダーに定義 ( ) がある場合、そのヘッダーを含むファイルごとに 1 つのコピーが割り当てられ、それらが競合します ("既に定義されています" エラー) int p,q;。宣言 ( ) に置き換えると、どこにも取得または割り当てられません。pqextern int p,q;pq

于 2012-04-24T19:52:53.210 に答える