C 请求非结构或联合错误中的成员
我在网上搜索了上述错误,但人们主要谈论访问结构(->vs.)字段的错误方式。我试过了,但还是收到了同样的错误。 我有两个结构:C 请求非结构或联合错误中的成员,c,struct,C,Struct,我在网上搜索了上述错误,但人们主要谈论访问结构(->vs.)字段的错误方式。我试过了,但还是收到了同样的错误。 我有两个结构: struct Node_ { int num; G12_t* G12; }node_t; struct G12_{ int level; int size; G12_t* next; }G12_t; 当我想访问节点中G12_t的level字段时,我得到了上面的错误。我可以访问以下级别字段: node_t* pNode; pN
struct Node_ {
int num;
G12_t* G12;
}node_t;
struct G12_{
int level;
int size;
G12_t* next;
}G12_t;
当我想访问节点中G12_t的level字段时,我得到了上面的错误。我可以访问以下级别字段:
node_t* pNode;
pNode->G12->level = 0;
看起来您试图为这两种类型创建typedef,但没有使用
typedef
关键字。您所做的是创建一个名为G12\u t
的struct G12\u的实例和一个名为Node\u t
的struct Node的实例
您需要在每个关键字之前添加typedef
关键字。此外,您需要在节点\u t
之前定义G12\u t
,因为后者使用前者,并且您可以在定义它的结构内部使用G12\u t
名称。您需要使用完整的结构名称:
typedef struct G12_{
int level;
int size;
struct G12_* next;
}G12_t;
typedef struct Node_ {
int num;
G12_t* G12;
}node_t;
节点\u t
不是一个类型,而是一个变量。您可能忘记了typedef
。不要为类型发明如此复杂的命名约定<代码>节点
对于struct
和typedef
:typedef结构节点
应该很好。另外,必须在节点
之前声明G12
。另一种方法是在结构
定义之前声明typedefs
<代码>类型定义结构G12 G12代码>,类型定义结构节点然后,struct
定义的顺序是自由的。