我是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
答案 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;