此代码写在名为Monster.c的文件中 . 我在GameMain.c文件和Monster.c文件中都定义了Monster.h . 在Monster.h文件中,代码是:
#ifdef MONSTER_H_
#define MONSTER_H_
int Monster(int Selection);
EnemyStats MonsterStats(int Selection);
#endif
然后我在Monster.c文件中创建了我的typedef结构,并创建了函数来返回结构的值 .
typedef struct EnemyStats
{
int EnemyHP;
int VictoryExp;
int EnemyLevel;
}
EnemyStats;
EnemyStats MonsterStats(int Selection)
{
struct EnemyStats value;
switch(Selection)
{
case 1:
value.EnemyLevel = 1;
value.VictoryExp = 1;
value.EnemyHP = 1;
return value;
case 2:
value.EnemyLevel = 1;
value.VictoryExp = 1;
value.EnemyHP = 1;
return value;
...
}
在GameMain.c文件中,我使用此代码尝试访问存储在struct中的信息:
EnemyStats result;
...
printf("%d", result.EnemyLevel);
当我使用gcc GameMain.c Monster.c时,它给出了错误
GameMain.c:40:2:错误:未知类型名称'EnemyStats'GameMain.c:61:25:错误:请求成员'EnemyHP'的东西不是结构或联合
如果我尝试在EnemyStats结果之前添加struct;它给了我这个错误 .
GameMain.c:在函数'main'中:GameMain.c:40:20:错误:'结果'的存储大小未知
我不确定我做错了什么 . 任何帮助表示赞赏 .
对于任何不知道的人,我正在使用...说我正在跳过不会影响我描述的情况或代码冗余的代码
1 回答
思考:
这是 #ifndef ,而不是
#ifdef
. 如果尚未定义MONSTER_H_
,则要运行该代码 .结构的定义通常在头文件中 .
把所有这些放在一起,我们有:
Monster.h
Monster.c
GameMain.c