線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1518
推到 Plurk!
推到 Facebook!

如何在BCB下將一個大*.cpp檔分割為數個小*.cpp檔進行編譯?

尚未結案
afatest
一般會員


發表:11
回覆:18
積分:5
註冊:2003-09-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-06-15 01:08:00 IP:140.129.xxx.xxx 未訂閱
因為我的程式不斷的在擴充,為了便於管理與維護, 我想要將我的程式原始碼,分割為數個小的cpp檔來進行編譯, 故想請問各位先進與大大們 在BCB下分割程式原始碼(cpp檔)的正確方法 笨小孩
------
笨小孩
anpino
版主


發表:31
回覆:477
積分:231
註冊:2003-01-02

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-06-15 07:46:35 IP:211.23.xxx.xxx 未訂閱
引言: 因為我的程式不斷的在擴充,為了便於管理與維護, 我想要將我的程式原始碼,分割為數個小的cpp檔來進行編譯, 故想請問各位先進與大大們 在BCB下分割程式原始碼(cpp檔)的正確方法 < face="Verdana, Arial, Helvetica"> afatest 您好: 將程式碼拆成數個cpp後, 記得在相關的cpp中將他們include即可。 舉例: 在Unit1.cpp中的幾個程式碼移到MouseEven.cpp,KeyEvent.cpp等等做分類後, 在Uint1.cpp的開頭
#include "Unit1.h" // 記得寫在這行後面
#include "MouseEven.cpp"
#include "KeyEven.cpp"
也就是說, 從Unit1.h Form1 class的移出來cpp就#include在Unit1.h, 從其他Unit.h Form class的移出來cpp就#include在所屬Unit.h裡。 ------------------------------- 數學系是內功很強(邏輯/分析) 資工系是招式很多(程式技巧) 就像令狐沖
afatest
一般會員


發表:11
回覆:18
積分:5
註冊:2003-09-24

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-06-15 09:07:51 IP:140.129.xxx.xxx 未訂閱
謝謝anpino版主的回答:    小的可不可以再進一步請教您< >, > 不知道這樣會不會問太多了< > 笨小孩
------
笨小孩
chtai
高階會員


發表:68
回覆:238
積分:116
註冊:2004-05-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-06-15 09:53:01 IP:140.113.xxx.xxx 未訂閱
引言: 1. 倘若"MouseEven.cpp"與"KeyEven.cpp"皆會用到 同一個函式時,該怎麼辦?我的程式就有這種問題, 拆開放到其中一個,會導致另一個無法使用;但若 兩邊同時皆定義時,會導致重複定義?對這樣的情形 有沒有較好的規劃方法來解決? 2. 若"MouseEven.cpp"與"KeyEven.cpp"皆include 相同的表頭檔,例如"jpeg.hpp",可以嗎? 3. 還有extern函式及extern變數在使用時,有特別 的使用時機或限制嗎?
afatest兄您好: 我也只是個初學者,不過以下是我在需要您所說的這功能 卻又不知該怎麼做比較好的時候,會用的做法 anyway,它會work咩 :) 您的1.2.問題 我會把這些要用到相同表頭檔或同一函式的副函式,另外寫在一個cpp裡 或是MouseEvent.cpp include KeyEvent.cpp KeyEvent.cpp 再 include jpeg.cpp 這樣應該也可以解決問題。 (反正compiler看到include就只是把那檔案一字不漏的copy到當前檔案罷了) 至於3.問題 拍謝,小弟功力不夠,不敢亂答 ^^a -- 若有說錯的地方,還請各位前輩指正
------
My Web: http://nelson.csie.us
My Blog: http://blog.nelson.csie.us
anpino
版主


發表:31
回覆:477
積分:231
註冊:2003-01-02

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-06-15 13:48:43 IP:211.23.xxx.xxx 未訂閱
afatest您好:    
引言: 1. 倘若"MouseEven.cpp"與"KeyEven.cpp"皆會用到 同一個函式時,該怎麼辦?我的程式就有這種問題, 拆開放到其中一個,會導致另一個無法使用;但若 兩邊同時皆定義時,會導致重複定義?對這樣的情形 有沒有較好的規劃方法來解決?
您所謂的"倘若"MouseEven.cpp"與"KeyEven.cpp"皆會用到 同一個函式時",我並不清楚這個共用的函式是不是也一樣是 "MouseEven.cpp"與"KeyEven.cpp"的Unit的Form class的成員函式。 如果是相同的Form class的成員函式的話, 那麼 #include "Unit1.h" #include "MouseEven.cpp" #include "KeyEven.cpp" 是不會出現錯誤的。 如果是你自訂的函數, 那麼chtai所提供的是一個好方法, 您可以試試看。 其他方法是 1) 將這個函數宣告在 #include "MouseEven.cpp" #include "KeyEven.cpp" 之前。 2) 將含有此函數宣告的header (例如test.h)放在 #include "MouseEven.cpp" #include "KeyEven.cpp" 之前, 即 #include "Unit1.h" #include "test.h" #include "MouseEven.cpp" #include "KeyEven.cpp" 。 3) 在Uunt1.h裡#include "test.h" 。 在這裡說明一下include的觀念: 假設我們在一個cpp中#include "test.h", 編譯器在編譯時會將test.h內容複製到程式中#include "test.h" 的位置, 取代 #include "test.h" 這一串字。 (同理,所有的include xxx 都會用 xxx 檔的內容取代include xxx 這一串字。) 詳見chtai的精簡說明。 當><>< face="Verdana, Arial, Helvetica">引言: 2. 若"MouseEven.cpp"與"KeyEven.cpp"皆include 相同的表頭檔,例如"jpeg.hpp",可以嗎? 可以, 但是要注意, header(也就是.h檔)的開頭一定要加上 #ifndef TSETH(自訂名稱) #define TESTH(自訂名稱) 尾一定要加上 #endif BCB 的Unit的header你可以注意看,它都有加。 #ifndef,#endif是給編譯器看的, 也就是跟編譯器說在這個header定義過的就不必再定義一次, 這就是為什麼include相同的header, 但compiler時不會造成重複定義的原因。 (我承認這樣亂無章法的說明很差。) 詳見MSDN中#ifndef,#endif的說明。
引言: 3. 還有extern函式及extern變數在使用時,有特別 的使用時機或限制嗎?
沒有。 但是必須注意, 由於extern 是表示使用同一個實體變數, 所以程式任何一部分都有可能會更改到這個值。 希望... 我這麼混亂的說明沒有照成您的困擾.... ------------------------------- 數學系是內功很強(邏輯/分析) 資工系是招式很多(程式技巧) 就像令狐沖
afatest
一般會員


發表:11
回覆:18
積分:5
註冊:2003-09-24

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-06-16 20:56:49 IP:140.129.xxx.xxx 未訂閱
感謝anpino版主與chtai:    在兩位的細心的解說下, 我才了解 #include 的意義和分割程式碼的方法 以往我都不曾去思考這樣的一個問題, 謝謝兩位的指導! 笨小孩
------
笨小孩
系統時間:2024-06-27 0:40:27
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!