[問題]使用function的概念

看板C_and_CPP (C/C++)作者 (記衰人)時間16年前 (2010/04/04 22:12), 編輯推噓4(408)
留言12則, 4人參與, 最新討論串1/1
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 遇到的問題: (題意請描述清楚) 通常function宣告在main()之外,看書發現可以宣告在main()裡面,測試時碰 到想不透的結果。code1編譯會過,但code2卻不會過。 為何code1會過? 又為何code1可以而code2不行? 請求指點 希望得到的正確結果: 程式跑出來的錯誤結果: 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) VC++ 有問題的code: (請善用置底文標色功能) // code1.************************ int main(){ void funcA(); void funcB(); funcA(); funcB(); return 0; } void funcA() { cout<<"In funcA"<<endl; } void funcB() { funcA(); } //code2.************************* int main(){ void funcA(); void funcB(); funcA(); funcB(); return 0; } void funcA() { funcB(); } void funcB() { cout<<"In funcB"<<endl; } 補充說明: -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.171.68.36

04/04 22:30, , 1F
Code2: funcA裡面看不到funcB的宣告吧
04/04 22:30, 1F

04/05 13:07, , 2F
宣告函式原型可以解決嗎?
04/05 13:07, 2F

04/05 17:52, , 3F
可以, 不過, 既然如此幹麻不一開始就把prototype宣告在
04/05 17:52, 3F

04/05 17:52, , 4F
global?? 除非希望某個函數只在某個{}內被使用....
04/05 17:52, 4F

04/05 19:01, , 5F
這是問題就是測試宣告在裡面,但編譯結果讓我想不透,code1
04/05 19:01, 5F

04/05 19:03, , 6F
可以但code2為何不可? scope個概念碰到問題
04/05 19:03, 6F

04/05 22:10, , 7F
很簡單吧?? code1可是因為main裡有A與B的prototype宣告;
04/05 22:10, 7F

04/05 22:11, , 8F
而funcB在funcA之後定義, 所以funcB也可以呼叫到funcA.
04/05 22:11, 8F

04/05 22:12, , 9F
code2裡, AB的prototype只在main裡, 所以出了main就不認
04/05 22:12, 9F

04/05 22:13, , 10F
識AB了; 又funcA內呼叫B時, B還不被A可見, 自然error了.
04/05 22:13, 10F

04/05 22:13, , 11F
把你的code畫一條timeline, 看看從哪個時間點開始哪些
04/05 22:13, 11F

04/05 22:13, , 12F
func的定義是存在的, 哪些情況它的scope就結束了看看@_@
04/05 22:13, 12F
文章代碼(AID): #1Bk9vWqP (C_and_CPP)
文章代碼(AID): #1Bk9vWqP (C_and_CPP)