Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 请求非结构或联合错误中的成员_C_Struct - Fatal编程技术网

C 请求非结构或联合错误中的成员

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

我在网上搜索了上述错误,但人们主要谈论访问结构(->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;

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
定义的顺序是自由的。