【发布时间】:2016-01-12 14:23:55
【问题描述】:
我有一个文件game.h 有这个声明
typedef struct Enemy {
...
}Enemy;
还有一个函数
void moveEnemy(Level* l, Enemy* enemy){
...
}
Level 在levels.h 上声明,所以在game.h 我有:
#include "levels.h"
一切都很完美,直到我不得不在levels.h 中使用Enemy。
所以,我在levels.h 中添加了:
#include "game.h"
现在我得到一个编译错误:
game.h:34:2: error: unknown type name ‘Level’
Level* level;
^
我在两个 .h 上都包含警卫
我不知道为什么我不能在文件中包含另一个。
我能做什么?
【问题讨论】:
-
这个问题我没看懂,
moveEnemy()是在头文件中定义的吗?如果是,它不应该! -
是的。我会把它放在一个 .c 中,看看它是否有效
-
不,看答案。但是 YES 从不将函数放在头文件中。头文件意味着不包括函数原型、常量和声明、结构定义或用户定义的数据类型等。不是函数定义,它们属于 .c 文件。