C 我在不同文件中使用结构时遇到问题

C 我在不同文件中使用结构时遇到问题,c,struct,linked-list,include,typedef,C,Struct,Linked List,Include,Typedef,我在一个文件.c中定义了一个结构,并在其头文件中定义了指向其指针的typedef。 我想在另一个文件.c中使用这个typedef,但它不起作用。我认为这是一个包括文件的问题 在文件game.c中 #include <stdbool.h> #include <stdlib.h> #include "chessSystem.h" #include "tournament.h" #include "game.h" #

我在一个文件.c中定义了一个结构,并在其头文件中定义了指向其指针的typedef。 我想在另一个文件.c中使用这个typedef,但它不起作用。我认为这是一个包括文件的问题

在文件game.c中

#include <stdbool.h>
#include <stdlib.h>

#include "chessSystem.h"
#include "tournament.h"
#include "game.h"
#include "map.h"
#include "player.h"

struct Game_node
{
    int game_id;
    Game_data game_data;
    Game next;
};
我想在另一个文件:tournament.c中使用这个结构到一个函数中,我试图定义一个Game类型的变量。但我无法访问结构的字段

#include "game.h"
..........

Game temp_game=malloc(sizeof(*temp_game));
    temp_game->
重要提示是,在分配临时游戏时,IDE发出错误信号:“sizeof”对不完整类型“struct game_node”的应用无效

我知道这不是很清楚。 如果你有问题,告诉我


非常感谢。

类型定义
typedef struct Game\u Node*游戏指的是一个不完整的类型,因为结构
游戏节点
的详细信息未知。编译器仍然可以编译只使用指向
struct Game\u节点的指针的代码,但不能编译使用
sizeof(struct Game\u节点)
或访问此结构成员的代码

常见的情况是
文件
,通常在
中定义为不完整类型。各种流函数采用一个
文件*
,用户代码不需要知道实现的细节,这在不同的系统中有很大差异

您应该将结构定义从game.c移动到game.h


如果要限制对结构内部的访问,可以在单独的文件gamedef.h中定义它,该文件仅包含在相应的模块中。

将结构定义从C文件移动到头文件。将结构定义移动到它所属的
.h
文件中。如果它不在
.h
文件中,那么其他文件当然看不到它。想想看;DR答案通常为“否”,函数指针可能例外。
#include "game.h"
..........

Game temp_game=malloc(sizeof(*temp_game));
    temp_game->