所以我在标题path.h
中定义了以下结构:
typedef struct path Path;
struct Path {
Path* branching_paths;
uint32_t nb_paths;
};
并在同一个标题中声明并定义了以下内联函数:
inline void init_path(Path* path);
inline void init_path(Path* path){
path->branching_paths = NULL;
path->nb_paths = 0;
}
而且我不知道为什么我会收到这个错误..我已经在网上搜索了但据我所知我已经在标题中正确定义了结构,或者我错过了什么?
./../Path.h:54:9: error: dereferencing pointer to incomplete type 'Path {aka struct path}'
path->branching_paths = NULL;
答案 0 :(得分:1)
您的typedef
中存在拼写错误。
您为typedef
定义struct path
,然后您定义struct Path
。因为C区分大小写,所以它们被视为两种不同的类型。
您现在的方式是,您声明了struct path
(Path
作为别名),但尚未对其进行定义。因此,当您尝试取消引用Path *
时,编译器不知道该结构是什么样的,因为您还没有告诉它。
你想要的是:
typedef struct Path Path;