我遇到这样一种情况,我的两个头文件都需要其中任何一个中定义的数据结构,即无论您以何种顺序包含它们,它都不会编译
但是,有问题的数据结构之一只包含指向另一个头文件中声明的数据结构的指针,所以我认为从技术上讲,此时它不需要知道有多大数据结构如此,所以它不应该提示
下面概述了我的意思的一个简化示例。我原以为库中的模式数组不需要知道模式有多大,只需要知道指向模式的指针有多大,因此如果编译器还没有看到模式的声明,它就不会提示在另一个头文件中。
header_1.h
typedef struct
{
Mode **modes;
} Library;
header_2.h
typedef struct
{
int number;
char *name;
} Mode;
最佳答案
它不需要知道大小,但它必须看到一个声明。前向声明
typedef struct Mode Mode;
在 struct Library
的定义就足够之前。
关于C 前向报关查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11396152/