C中的“未知类型名称”嵌套结构

时间:2018-10-17 15:05:02

标签: c struct unions

这是我第一次尝试在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;。似乎可以工作。

0 个答案:

没有答案