Re: [問題] extern

看板C_and_CPP作者 (累人啊....)時間16年前 (2009/10/26 20:53), 編輯推噓2(206)
留言8則, 3人參與, 最新討論串3/9 (看更多)
※ 引述《tyc5116 (累人啊....)》之銘言: 不好意思,這個問題我似乎找到了一點頭緒,不過還有一些觀念要了解一下 我弄了一個更簡單的例子 #include <iostream> #include "a.h" using namespace std; int aaa=5; int main(){ abc(); return 0; } //a.cpp #include "a.h" #include <iostream> using namespace std; extern int aaa; void abc(){ int bbb=aaa*5; cout<<bbb; } 若我將藍色部份移到main內宣告便會出錯,錯誤訊息和我原來所遇到的很像 我之前一直以為main內的變數生命週期是在程式結束後才消失 (我不知道這樣形容對不對,再麻煩更會解釋的大大說一下) 但目前看來似乎其生命週期只有在main()內(就是把main當一般的函數來看) 我的觀念錯了嗎?? (不好意思,好像是很簡單的問題,不過還是想了解一下) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 163.18.48.28

10/26 20:59, , 1F
你指的int aaa=5這是定義 你寫在main scope就不同了
10/26 20:59, 1F

10/26 21:00, , 2F
而你說得出錯是? abc找不到aaa? 因為他找不到定義呀
10/26 21:00, 2F

10/26 21:01, , 3F
錯誤就是寫說"無法解析的外部符號 int aaa"
10/26 21:01, 3F

10/26 21:02, , 4F
對阿找不到定義 ~就是看到宣告extern那行 可是你用他 卻沒定
10/26 21:02, 4F

10/26 21:02, , 5F
10/26 21:02, 5F

10/26 21:07, , 6F
問題是它不是只在main(){}裡啊XD 這算是life time與
10/26 21:07, 6F

10/26 21:08, , 7F
scope搞錯的問題嗎....@_@"
10/26 21:08, 7F

10/26 21:12, , 8F
恩...應該吧...目前搞混中...@@
10/26 21:12, 8F
文章代碼(AID): #1AvPlMnW (C_and_CPP)
討論串 (同標題文章)
以下文章回應了本文
完整討論串 (本文為第 3 之 9 篇):
問題
3
12
問題
5
13
問題
1
1
問題
1
2
問題
2
8
問題
3
10
問題
0
10
文章代碼(AID): #1AvPlMnW (C_and_CPP)