移动到不同的 header 文件后无法发送指向结构的指针

Cant send pointer to structure after it moved to a different header file

我有一个程序分布在 3 个不同的 C 文件中,它附带 2 个 header 文件。我最初有 header “Player.h” 用于保存“地图”结构(以及其他):

#ifndef PLAYER_H_INCLUDED
#define PLAYER_H_INCLUDED
typedef struct map{
    float x;
    float y;
}map;
/// some other functions and structures///
#endif

我想将它移动到它自己的 header 文件中,“Map.h”所以它与其他 map-related 函数和结构。

#ifndef MAP_H_INCLUDED
#define MAP_H_INCLUDED
typedef struct map{
    float x;
    float y;
}map;
#endif

我正常制作了 Map.c 文件,并在其中编写了一个可以运行的函数,但我还没有在 main.c 中调用该函数。 我在main.c中制作了“地图”数据结构如下:

#include "Player.h"
#include "Map.h"
int main(){
... /// some other stuff being done

map map;
map.x = 0;
map.y = 0;
... /// more stuff being done

callfunctioninplayer(&map, /// other variables///)
}

所以我调用了 player.c 中的函数,其中我还使用 #included "Map.h" 包含了 map.h。但是在尝试编译它之后,它在我要求 map* map 结构的任何地方都给了我错误:


In file included from ./main.c:10:0:
./Player.h:21:55: error: unknown type name ‘map’
 void movementPlayer(int* inputPlayer, player* player, map* map, unsigned int countFrames);

./Player.h:21:55: error: unknown type name ‘map’
 void movementPlayer(int* inputPlayer, player* player, map* map, unsigned int countFrames);
                                                       ^~~
In file included from ./Map.c:10:0:
./Player.h:21:55: error: unknown type name ‘map’
 void movementPlayer(int* inputPlayer, player* player, map* map, unsigned int countFrames);

我检查了是否到处都定义了 map.h,是的,并且在将 map 结构放回 player.h 之后我再次测试了它。将其放回 player.h 有效,但为什么不将其放回 map.h? 很抱歉,如果这个问题问得太多了,我查看了一些帖子,但找不到有相同错误的人

看起来 map 被用在了 Player.h 中,但是 Map.h 在 Player.h 被包含的时候还没有被包含,而且大概你没有'在 Player.h.

中包含 Map.h

如果Player.h需要在Map.h中定义,那么你需要#include "Map.h"在Player.h中定义。