字段父类型不完整

时间:2013-12-18 02:22:27

标签: c

我是C的新手,无法编译此程序。这是代码的相关部分:

typedef struct {
    git_odb_backend parent;

    redisContext *db;
} hiredis_backend;

编译错误结果:

error: field 'parent' has incomplete type

这里是完整的文件:https://github.com/libgit2/libgit2-backends/blob/master/redis/hiredis.c

类似问题的其他答案提到了头文件。是否应该有hiredis.h文件?

编辑 git_odb_backend在此处定义:https://github.com/libgit2/libgit2/blob/development/include/git2/sys/odb_backend.h

1 个答案:

答案 0 :(得分:2)

我对git_odb_backend的内容一无所知(编译器也不知道)所以这是我的建议。

文件hiredis.c需要知道git_odb_backend的完整声明,以允许您将其声明为非指针成员变量。这是因为编译器需要了解git_odb_backend的内容,例如:它的大小是多少?我该如何构建它?它不需要知道函数实现,只需要知道结构的样子。

所以你需要找到声明git_odb_backed的头文件并将其包括在内 hiredis.c

或者,转发声明并取指针:

typedef struct git_odb_backend git_odb_backend;

typedef struct {
    git_odb_backend*parent;
    redisContext *db;
} hiredis_backend;