作者QQ29 (我爱阿蓉)
看板C_and_CPP
标题Re: [问题] extern
时间Mon Oct 26 21:18:06 2009
※ 引述《tyc5116 (累人啊....)》之铭言:
: ※ 引述《tyc5116 (累人啊....)》之铭言:
: 不好意思,这个问题我似乎找到了一点头绪,不过还有一些观念要了解一下
: 我弄了一个更简单的例子
: #include <iostream>
: #include "a.h"
: using namespace std;
: int aaa=5;
^^^^^^^^^^
你写在global区
: int main(){
: abc();
: return 0;
: }
: //a.cpp
: #include "a.h"
: #include <iostream>
: using namespace std;
: extern int aaa;
宣告aaa 定义写在上面的main.cpp 这样OK
可是你宣告了aaa 如果你main.cpp把int aaa;写在main里面
你abc虽然看到了aaa这个宣告 他会去global区找 aaa 可是他看不到main里面的aaa
就是我意思说的scope不同 根本看不到aaa阿@@
把abc的aaa改成写 int bbb=::aaa*5; 这样比较明白嘛~
如果把extern 拉到abc里面变为
void abc()
{
extern int aaa;
int bbb=::aaa*5; cout<<bbb;
^^^^^
加了::就会出错....你可以想一下为什麽(scope问题)
main.cpp global区有写int aaa=5;
}
: void abc(){
: int bbb=aaa*5;
: cout<<bbb;
: }
: 若我将蓝色部份移到main内宣告便会出错,错误讯息和我原来所遇到的很像
: 我之前一直以为main内的变数生命周期是在程式结束後才消失
: (我不知道这样形容对不对,再麻烦更会解释的大大说一下)
: 但目前看来似乎其生命周期只有在main()内(就是把main当一般的函数来看)
: 我的观念错了吗??
: (不好意思,好像是很简单的问题,不过还是想了解一下)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.113.207.187