作者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