我是 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
最佳答案
我对 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;
关于c - 父字段类型不完整,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20648610/