在C中包含所有标头后,未知类型名称“ Enemy”错误

黑暗之歌

我正在用SDL 2.0C开发游戏,但遇到以下问题:每个文件包含所有需要的.h文件后,编译器在上显示错误(unknown type name 'Enemy'shoots.h,其中我有一个函数类型声明为Enemy敌人

我认为我遇到错误的头文件是bullet.h,敌人.h,mobs.h和shoots.h。(还有更多类似sdl.h

项目符号

#ifndef BULLET_H_INCLUDED
#define BULLET_H_INCLUDED
#include "sdl.h"

typedef struct Bullet *Bullet;

#endif // BULLET_H_INCLUDED

敌人

#ifndef ENEMY_H_INCLUDED
#define ENEMY_H_INCLUDED
#include "sdl.h"
#include "shoots.h"

typedef struct Enemy *Enemy;

#endif // ENEMY_H_INCLUDED

暴徒

#ifndef MOBS_H_INCLUDED
#define MOBS_H_INCLUDED
#include "enemy.h"

typedef struct EnemyList *EnemyList;
typedef struct EnemyPosition *EnemyPosition;

#endif // MOBS_H_INCLUDED

芽.h

#ifndef SHOOTS_H_INCLUDED
#define SHOOTS_H_INCLUDED
#include "sdl.h"
#include "player.h"
#include "bullet.h"
#include "enemy.h"


typedef struct BulletList *BulletList;
typedef struct BulletPosition *BulletPosition;

void initEnemyShoots(BulletList l, BulletPosition p, Player pl, Enemy e);

#endif // SHOOTS_H_INCLUDED

在敌人上构造敌人声明

struct Enemy {
    SDL_Surface *sprite;    //Enemy sprite
    int x, y;             //Enemy position
    int w, h;               //Enemy hitbox
    BulletList ammo;      //Enemy bullets
};

这些标头还声明了在每个.c文件上实现的功能。所有结构都在他自己的.c中定义

那是我遇到问题的地方initEnemyShoots,因为其中一个参数是Enemy类型。我该如何解决?

萨格马克

该问题是由于敌方.h中包含#shoots.h而引起的

#include "shoots.h"后面#define ENEMY_H_INCLUDED,但是它在实际声明Enemy为指向的指针之前struct Enemy因此,shoots.h内部Enemy尚未定义,但是ENEMY_H_INCLUDED,即使shoots.h #includes敌人.h,include防护也阻止对其进行评估,并且Enemy永远都不会被定义。

解决方案是,如果不需要的话,不要在敌人.h内部包含“ shoots.h”。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

即使我已经包含了相关的C库和标头,也会出现未知类型名称'size_t'的错误

Python 错误 <__main__.Enemy 对象的绑定方法 Enemy.enemyhealth 在 0x0000025C21514A30>>

包含现有标头的致命错误

带有节点的Express应用程序中的“错误:发送标头后无法设置标头”

从C ++ / CX迁移到C ++ / WinRT时与标头和名称空间有关的错误

Google图表:“未捕获(承诺)错误:未知标头类型:4.7278”错误

在Code :: Blocks错误中包含多个标头

Express单元测试,带有Chai错误=发送标头后无法设置标头

错误:发送标头后无法设置。在nodejs中

如何修复Express中的“错误:发送标头后无法设置标头”

错误:未知类型名称“ Point”

错误:类型名称未知的“ CURL”

错误:未知类型名称“ FILE”

CXF中的标头错误

错误:发送标头后无法设置标头

UnhandledPromiseRejectionWarning:错误:发送标头后无法设置标头

NodeJs错误:发送标头后无法设置标头

收到错误-发送标头后无法设置标头

表达错误:发送标头后无法设置标头

如何摆脱Xcode中的“未知类型名称'__declspec'”错误

错误:OSX 10.11.2中未知类型名称'u_char'

c99-错误:未知类型名称'pid_t'

错误:发送后无法设置标头。

包含const变量且包含在多个文件中的标头的链接错误?

AttributeError: 'Enemy' 对象没有属性 'blit'

错误:“状态”的存储大小未知,我缺少哪个标头?

修复 NGINX 中的“Access-Control-Allow-Origin”标头包含多个值错误

XCode6:收到错误“在框架模块中包含非模块化标头”

Clang + VS2013:包含C ++标头时发生错误(vs2012:working)