这是我第一次尝试在C中的结构内部创建联合。如果可能的话,我想创建一个结构A和B。在A使用B中,在B使用A中。
问题是,我将遇到声明问题。
typedef struct A_t {
int type;
union {
B* B_p;
struct {
A* A_p;
char coma;
B* B_p;
} type1;
} data;
} A;
typedef struct B_t {
int type;
union {
struct {
char open;
A* A_p;
char close;
} type1;
struct {
char open;
A* A_p;
char coma;
char close;
} type2;
} data;
} B;
以下是输出:
error: unknown type name ‘B’
B* B_p;
^~
error: unknown type name ‘A’
A* A_p;
^~
error: unknown type name ‘B’
B* B_p;
^~
如何绕开/修复此问题?
编辑1:
使指针指向该结构是解决方案。我已经去了。通过深入研究,我发现您必须为它们使用关键字“ struct”。
我已将B* B_p;
替换为struct B_t* B_p;
。似乎可以工作。