Re: [問題] C語言 - Struct 在大型程式專案中的使用?

看板C_and_CPP (C/C++)作者 (nahgnimiast)時間16年前 (2009/04/04 10:22), 編輯推噓1(1010)
留言11則, 2人參與, 最新討論串2/3 (看更多)
※ 引괊z《RaiGend0519 (鮮度減半,老了0.5歲囧)》之銘言: : 就像我現在設定一個在main.o: : struct pc { : int a; : int b; : }; : struct pc pcgame={1,2}; : struct pc2 { : int c; : int d; : }pcgame2; : 然後我在其他.o檔裡面有使用到: : if(pcgame.a > pcgame.b) : XXXXXXXX; : else : XXXXXXXX; : 或著 : pcgame2.c=((rand()%3)+1); : 這樣的時候 : 該怎麼作才能讓他們之間可以互相使用? : 因為我怎麼試他都說沒有定義 : 有人說用#define把struct跟創造的結構變數寫進去... : 可是這樣不是就不能更動了嗎= ="... : 我試著把struct做成.c檔 : 然後include近來 : 並在main.o設定全域變數 : 但是Dev c++說這樣是"muiltily define pcgame"... 之前我嘗試把程式碼分開寫的時候也碰過。 我試了很久之後用了下面的方法,但是我不知道一般怎麼處理 你可以寫一個global.h把所有共用的struct定義都寫在這裡, 有需要用到的再include此定義檔,然後真正宣告的實體變數, 也多加一筆資料在這邊,只是要加上extern類似下面 =====================global.h================ #ifudef _GLOBAL_H_ #define _GLOBAL_H_ struct pc{ int a; int b; }; struct pc2{ int c; int d; }; extern struct pc pcgame; #endif ===================main.c===================== #include "global.h" void main() { struct pc pcgame = {1,2}; } ==================xxxx.c====================== #include "global.h" void aaa(void) { pcgame.a = 1; pcgame.b = 2; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.168.67.96

04/04 10:28, , 1F
ps 有錯別找我啊,記得自己測測看
04/04 10:28, 1F

04/04 10:39, , 2F
特別是main.c那邊,我編譯會過,所以那時忘了測看看
04/04 10:39, 2F

04/04 10:39, , 3F
到底正不正確
04/04 10:39, 3F

04/04 10:43, , 4F
因為我不確定 extern xxx a; 和 實體宣告放一起會不會
04/04 10:43, 4F

04/04 10:43, , 5F
出問題
04/04 10:43, 5F
※ 編輯: tsaiminghan 來自: 218.168.67.96 (04/04 11:38)

04/04 11:38, , 6F
改一下xxxx.c
04/04 11:38, 6F

04/04 14:27, , 7F
1. 你有宣告但沒定義
04/04 14:27, 7F

04/04 14:28, , 8F
2. main.c 裡面實際上會多宣告一個 pcgame 區域變數
04/04 14:28, 8F

04/04 14:29, , 9F
對,要宣告在全域才會...我弄錯了
04/04 14:29, 9F

04/04 14:30, , 10F
宣告成區域變數,其他人會讀不到。
04/04 14:30, 10F

04/04 14:30, , 11F
多謝指正。
04/04 14:30, 11F
文章代碼(AID): #19riHeBz (C_and_CPP)
文章代碼(AID): #19riHeBz (C_and_CPP)