Re: [問題] 關於C++的基本問題

看板Programming作者時間18年前 (2007/10/15 09:32), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串7/12 (看更多)
※ 引述《may1212.bbs@ptt.cc》之銘言: > ※ 引述《GOLDMEMBER.bbs@bbs.cs.nctu.edu.tw (㊣SHISEIDO SUPERHARD)》之銘言: > : 第一你就把「定義」這個名詞的意思弄錯了。 > 能不能請G大說明一下函式的宣告跟定義, 書上在這部份只有幾行帶過. 這個在我看已經算generic programming language的概念了,就是前面有人要 買中文版的Sebesta的書,或者另一本Sethi的書的範圍,所以前面才說你將來 應該會學到,那時用到的辭彙也會比較精確。這裡我就很草率地解釋一下。 在C這類的imperative languages當中函式一向都有兩種主要的寫法,一種是 所有的函式都寫在主程式前面,第二種是主程式放在所有函式前面。問題是不 管你怎麼寫,two-pass compiler(compiler的主要設計方法) 一定是依照file stream的自然順序,從前面看到後面。在第一種寫法中不會有問題,因為函式 本體一定會在主程式之前給compiler讀到,這就保證所有函式在呼叫以前都會 得到定義。但是第二種寫法就不能這樣了,compiler會先看主程式再看其他函 式。既然各個函式還沒定義以前就會被呼叫到,我要怎麼保證在主程式中呼叫 函式的方式沒有錯誤?所以在這一種寫法中需要function prototypes.有了 function prototypes 之後函式和主程式的順序就脫鉤了,你可以任意寫,混 合也沒有關係,而且在第一種寫法中如果函式之間互相呼叫,那麼被人呼叫的 一定要寫在前面,在第二種寫法中無此限制。 另外一種狀況是separate compiling。在大型專案中會把主程式和各個函式分 開存成不同檔案,每次只針對有更動到的部份編譯,但是我要怎麼保證各個檔 案間互相呼叫的語法為正確,又不要勞動compiler在每次用到的時候就把用到 的檔案再找出來從頭看過?這也就是靠 function prototypes。.h檔就是function protoypes 的集合,而.h檔對應的函式本體又預先編譯好變成.lib/.obj 或.o/.so, 然後一切再由linker包起來變成執行檔。 這些過程在現代的language IDE裡面都被藏起來了,你只能從一些指令中看到, 如Compile, Make, Build等等,現在也不需要懂,但是將來就會學到。我個人 是主張新手在開始階段先學書上的事情就好,不要想太多雞生蛋的問題,結果 可能是問題想了很多,程式卻寫得不夠,那就本末倒置。   -- I love GOOOOOOOOOOOOOOOOOOLD------   -- ▄▄▄▄▄▄▄ ▄▄▄▄ ▄▄▄▄▄▄ <telnet://bbs.cs.nctu.edu.tw> █▄▄▄▄█ █ ▄▄▄▄▄█ Player: GOLDMEMBER ▄█▄▄▄▄█ ▄▄▄█ █▄▄▄▄▄ From: 59-115-194-181.dynamic.hine ☆ 次世代BS2 ☆ 可申請個人板 150MB 相簿 http://pic.bs2.to 交大資訊人 250MB
文章代碼(AID): #174iCI00 (Programming)
文章代碼(AID): #174iCI00 (Programming)