首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于const的一个简单有关问题

2012-03-06 
关于const的一个简单问题菜鸟问题君莫笑vc下两个文件c1.cpp的内容是constinti7voidPrint()voidmain(){P

关于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;
}


没有包含头文件!而且外部变量申请一次!

热点排行