移动到不同的 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中定义。
我有一个程序分布在 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.
如果Player.h需要在Map.h中定义,那么你需要#include "Map.h"
在Player.h中定义。