c-取消引用指向不完整类型(节点)的指针



所以我有一个主C文件,其中有一个带有Node结构声明的头文件,但Node结构是在另一个源C文件中定义的。

当我试图访问其中一个节点结构的数据时,它给了我这个错误

正在取消引用指向不完整类型(节点(的指针。

当我把定义放在头文件或主c文件中时,我的程序运行得很顺利。

老实说,我不明白问题出在哪里。

所以您有某种指向结构的指针。

struct StructType *struct_ptr = ...;

而且您还没有首先声明struct StructType。这没问题。语言允许这样做。通过确保指向结构的所有指针大小相同,无论结构是什么,编译器都可以毫无问题地复制它们。

但随后您尝试取消引用指针。

struct_ptr->field

如果编译器没有被告知field的类型,它就不知道它有多大,也不知道如何解释它的组成字节。如果没有这些信息,编译器就无法生成读取字段或写入字段的代码。

如果编译器没有被告知结构中哪些字段在field之前及其类型,则它无法计算结构中field的偏移量。这意味着它不知道field在结构中的位置。如果没有这些信息,编译器就无法生成读取字段或写入字段的代码。

在您的场景中,编译器不会被告知任何这些信息。这些问题使编译器无法编译此代码。

最新更新