在结构指针中“取消引用指向不完整类型的指针”

时间:2016-08-15 18:00:36

标签: c pointers struct

所以我在标题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;

1 个答案:

答案 0 :(得分:1)

您的typedef中存在拼写错误。

您为typedef定义struct path,然后您定义struct Path。因为C区分大小写,所以它们被视为两种不同的类型。

您现在的方式是,您声明了struct pathPath作为别名),但尚未对其进行定义。因此,当您尝试取消引用Path *时,编译器不知道该结构是什么样的,因为您还没有告诉它。

你想要的是:

typedef struct Path Path;