关于const的一个简单问题
菜鸟问题君莫笑
vc下两个文件
c1.cpp的内容是
const int i=7;
void Print();
void main()
{
Print();
}
c2.cpp的内容是
#include <iostream.h>
extern i;
void Print()
{
cout < <i < <endl;
}
我不明白的是为什么出错呢?提示unresolved external symbol "int i ",c1.cpp不是有了么
[解决办法]
const全局变量默认是static的,即internal linkage。你需要显示指定为extern的。
把你c1.cpp中的
const int i=7;
改成:
extern const int i=7;
即可。
[解决办法]
那就再把c2.cpp中的
extern i;
改成:
extern const int i;
试试看。
[解决办法]
那就再把c2.cpp中的
extern i;
改成:
extern const int i;
试试看。
这个可以运行了,但不知道为什么要这样改?
[解决办法]
因为需要变量类型一致,你声明i为const int,则在c2.cpp中就应该为extern const int i;了,对于c1.cpp中的改法原因,steedhorse(晨星) 已經說得很清楚了。
這是我個人看法,敬請批評指正。
[解决办法]
文件1:
#include "myhead.hpp "
using namespace std;
const int i=7;
void Print(void);
int main(void)
{
Print();
system( "pause ");
return 0;
}
文件2:
#include <iostream>
using namespace std;
extern const int i;
void Print(void)
{
cout < < i < <endl;
}
我在DEV-C++上调试通过~!
[解决办法]
#include "hrt.H "
//void Print();
void main()
{//i=8;
Print();
}
#include <iostream.h>
extern const int i=8;
void Print()
{
cout < <i < <endl;
}
没有包含头文件!而且外部变量申请一次!