看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《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
QQ29:你指的int aaa=5這是定義 你寫在main scope就不同了 10/26 20:59
QQ29:而你說得出錯是? abc找不到aaa? 因為他找不到定義呀 10/26 21:00
tyc5116:錯誤就是寫說"無法解析的外部符號 int aaa" 10/26 21:01
QQ29:對阿找不到定義 ~就是看到宣告extern那行 可是你用他 卻沒定 10/26 21:02
QQ29:義 10/26 21:02
VictorTom:問題是它不是只在main(){}裡啊XD 這算是life time與 10/26 21:07
VictorTom:scope搞錯的問題嗎....@_@" 10/26 21:08
tyc5116:恩...應該吧...目前搞混中...@@ 10/26 21:12