所以我有一个主C文件,其中有一个带有Node结构声明的头文件,但Node结构是在另一个源C文件中定义的。
当我试图访问其中一个节点结构的数据时,它给了我这个错误
正在取消引用指向不完整类型(节点(的指针。
当我把定义放在头文件或主c文件中时,我的程序运行得很顺利。
老实说,我不明白问题出在哪里。
所以您有某种指向结构的指针。
struct StructType *struct_ptr = ...;
而且您还没有首先声明struct StructType
。这没问题。语言允许这样做。通过确保指向结构的所有指针大小相同,无论结构是什么,编译器都可以毫无问题地复制它们。
但随后您尝试取消引用指针。
struct_ptr->field
如果编译器没有被告知field
的类型,它就不知道它有多大,也不知道如何解释它的组成字节。如果没有这些信息,编译器就无法生成读取字段或写入字段的代码。
如果编译器没有被告知结构中哪些字段在field
之前及其类型,则它无法计算结构中field
的偏移量。这意味着它不知道field
在结构中的位置。如果没有这些信息,编译器就无法生成读取字段或写入字段的代码。
在您的场景中,编译器不会被告知任何这些信息。这些问题使编译器无法编译此代码。