解除引用指向不完整类型

时间:2016-11-07 18:54:57

标签: c compiler-errors

我有两个文件,file.h和file.c

在头文件中,我有以下定义:

struct openfile {
    struct vnode *of_vnode;
    struct lock *of_lock;
    off_t of_offset;
    int of_accmode; /* from open: O_RDONLY, O_WRONLY, or O_RDWR */
    int of_refcount;
};

struct filetable {
    struct openfile *ft_openfiles[MAX_FILES];
};

我正在尝试访问file.c中的openfiles数组。例如,

int fd;
/* NULL-out the table */
for (fd = 0; fd < MAX_FILES; fd++) {
    curthread->t_filetable->ft_openfiles[fd] = NULL;
}

访问ft_openfiles数组的行在编译期间导致错误。

../../userprog/file.c:157: error: dereferencing pointer to incomplete type

我在这里看了几个相关的问题,但我真的不明白这个错误。

1 个答案:

答案 0 :(得分:1)

错误意味着curthread或t_filetable是声明但未完全定义的类型。其中一个是void类型的指针或缺少类型定义。

以下示例可能会触发相同的错误:

struct A;
struct A curthread;