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;extern int p,q;正确,但您还需要包含int p,q;在一个 .cpp 文件中

如果您int p,q;在标头中有定义 ( ),那么您将获得一份并为包含该标头的每个文件分配一份副本pq并且它们会发生冲突(“已定义”错误)。如果您将其替换为声明 ( extern int p,q;),则您不会在任何地方获得pq分配。

于 2012-04-24T19:52:53.210 回答