作者tsaiminghan (nahgnimiast)
看板C_and_CPP
標題Re: [問題] C語言 - Struct 在大型程式專案中的使用?
時間Sat Apr 4 10:22:29 2009
※ 引괊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
1F:→ tsaiminghan:ps 有錯別找我啊,記得自己測測看 04/04 10:28
2F:→ tsaiminghan:特別是main.c那邊,我編譯會過,所以那時忘了測看看 04/04 10:39
3F:→ tsaiminghan:到底正不正確 04/04 10:39
4F:→ tsaiminghan:因為我不確定 extern xxx a; 和 實體宣告放一起會不會 04/04 10:43
5F:→ tsaiminghan:出問題 04/04 10:43
※ 編輯: tsaiminghan 來自: 218.168.67.96 (04/04 11:38)
6F:→ tsaiminghan:改一下xxxx.c 04/04 11:38
7F:推 littleshan: 1. 你有宣告但沒定義 04/04 14:27
8F:→ littleshan: 2. main.c 裡面實際上會多宣告一個 pcgame 區域變數 04/04 14:28
9F:→ tsaiminghan:對,要宣告在全域才會...我弄錯了 04/04 14:29
10F:→ tsaiminghan:宣告成區域變數,其他人會讀不到。 04/04 14:30
11F:→ tsaiminghan:多謝指正。 04/04 14:30