C 我在不同文件中使用结构时遇到问题
我在一个文件.c中定义了一个结构,并在其头文件中定义了指向其指针的typedef。 我想在另一个文件.c中使用这个typedef,但它不起作用。我认为这是一个包括文件的问题 在文件game.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" #
#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->