Re: [問題] extern

看板C_and_CPP作者 (我愛阿蓉)時間16年前 (2009/10/26 21:18), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/9 (看更多)
※ 引述《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
文章代碼(AID): #1AvQ6HbQ (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
問題
2
8
完整討論串 (本文為第 4 之 9 篇):
問題
3
12
問題
5
13
問題
1
1
問題
1
2
問題
2
8
問題
3
10
問題
0
10
文章代碼(AID): #1AvQ6HbQ (C_and_CPP)