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)
你还推荐别的吗?谢谢。
答案 0 :(得分:1)
用int p,q;
替换extern int p,q;
是正确的,但您还需要在一个.cpp文件中包含int p,q;
如果标题中有定义(int p,q;
),那么您将获得为包含该标题的每个文件分配的p
和q
的副本,并且它们冲突(“已定义”错误)。如果您使用声明(extern int p,q;
)替换它,则不会在任何地方分配p
或q
。