C++关于跨文件调用变量的小疑点
C++关于跨文件调用变量的小问题
在一个工程中
//1.h
extern const int m=1;
int n=2;
//main.cpp
#include<iostream>
using namespace std;
extern int m;
extern int n;
int main()
{
cout<<m<<n<<endl;
return 0;
}
VC++6.0编译器总提示
--------------------Configuration: a - Win32 Debug--------------------
Linking...
main.obj : error LNK2001: unresolved external symbol "int m" (?m@@3HA)
main.obj : error LNK2001: unresolved external symbol "int n" (?n@@3HA)
Debug/a.exe : fatal error LNK1120: 2 unresolved externals
执行 link.exe 时出错.
a.exe - 1 error(s), 0 warning(s)
求教~
------解决方案--------------------
extern const int m=1;
int n=2;
两个变量不应该放在.h文件中,而应该放在.c或者.cpp文件里面,头文件是不参加编译的,除非lz把他们include进来
------解决方案--------------------
//1.h
int m=1;
int n=2;
//main.cpp
#include<iostream>
#include"1.h"
using namespace std;
extern int m;
extern int n;
int main()
{
cout<<m<<n<<endl;
return 0;
}
------解决方案--------------------
或者
//1.cpp
int m=1;
int n=2;
//main.cpp
#include<iostream>
using namespace std;
extern int m;
extern int n;
int main()
{
cout<<m<<n<<endl;
return 0;
}
在一个工程中
//1.h
extern const int m=1;
int n=2;
//main.cpp
#include<iostream>
using namespace std;
extern int m;
extern int n;
int main()
{
cout<<m<<n<<endl;
return 0;
}
VC++6.0编译器总提示
--------------------Configuration: a - Win32 Debug--------------------
Linking...
main.obj : error LNK2001: unresolved external symbol "int m" (?m@@3HA)
main.obj : error LNK2001: unresolved external symbol "int n" (?n@@3HA)
Debug/a.exe : fatal error LNK1120: 2 unresolved externals
执行 link.exe 时出错.
a.exe - 1 error(s), 0 warning(s)
求教~
------解决方案--------------------
extern const int m=1;
int n=2;
两个变量不应该放在.h文件中,而应该放在.c或者.cpp文件里面,头文件是不参加编译的,除非lz把他们include进来
------解决方案--------------------
//1.h
int m=1;
int n=2;
//main.cpp
#include<iostream>
#include"1.h"
using namespace std;
extern int m;
extern int n;
int main()
{
cout<<m<<n<<endl;
return 0;
}
------解决方案--------------------
或者
//1.cpp
int m=1;
int n=2;
//main.cpp
#include<iostream>
using namespace std;
extern int m;
extern int n;
int main()
{
cout<<m<<n<<endl;
return 0;
}