在我的C项目中有一些实体。对于每个实体,都有头文件和源文件。在头文件中,我定义了几个结构。
例如,我们说我们的实体是Baz
。然后我们有baz.h
和baz.c
。在baz.h
里面会有类似的内容:
typedef struct baz_t {
int i;
char c;
} Baz;
typedef struct bazbaz_t {
Baz *b;
} BazBaz;
以同样的方式,我可以定义一个实体Foo
,它的结构包含指向另一个结构的指针。类似的东西:
typedef struct foo_t {
Baz *b;
} Foo;
总而言之,每个实体都可以有多个结构,一个结构可以有一个指向同一个实体中另一个结构的指针,或者一个指向另一个实体的结构的指针。
最后,那些结构(显然)应该被项目中的其他文件使用。
我创建了main.h\ main.c
#include
所有实体,每个实体都有main.h
的包含。我还添加了包含警戒以避免循环依赖。
问题是:
我得到了所有C2016错误;我已尝试将typedef
移至main.h
,但问题尚未解决。
我该如何解决这个问题?我更确定那里有一个正确的范例来处理这种情况,但我对C来说相对较新。
答案 0 :(得分:1)
您在此处使用新创建的类型名Baz
作为名称:
Baz *Baz;
它与做的一样:
int int;
这也是非法的,因为“Ï”是一个类型名称。 如果您将其更改为:
Baz *baz;
它应该有用。