我有两个文件,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
我在这里看了几个相关的问题,但我真的不明白这个错误。
答案 0 :(得分:1)
错误意味着curthread或t_filetable是声明但未完全定义的类型。其中一个是void类型的指针或缺少类型定义。
以下示例可能会触发相同的错误:
struct A;
struct A curthread;