c - 父字段类型不完整

标签 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

最佳答案

我对 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/

相关文章:

c++ - 这个静态变量赋值给局部函数中的指针有什么问题?

c++ - 创建最小化重叠窗口 (Win32)

跨平台系统使用指标

c - 如何在计数中包含文件的最后一个字

计算一行文本中有多少个单词? (C 编程语言)

c - 如何在没有 libcurl 的情况下在 C 中发出 HTTP get 请求?

C、多维数组练习

c - 以什么顺序调用 autotools 来创建构建系统?

c - 如何为 Linux 编写 Hello world 驱动程序

C : Why the size of my pizza is not 10 bytes?