在数组中声明结构类型的元素
Posted
技术标签:
【中文标题】在数组中声明结构类型的元素【英文标题】:declare element in array that is the struct type 【发布时间】:2022-01-16 05:48:46 【问题描述】:我有这个结构:
typedef struct
int id;
node_t * otherNodes;
node_t;
我的节点中需要一个节点数组......
但在头文件中无法识别:它告诉我`未知类型名称'node_t'
我该如何解决这个问题?
谢谢
【问题讨论】:
这能回答你的问题吗? self referential struct definition? 我会尝试..但我需要一个其他节点的数组 解决方法是给结构本身命名。然后,您可以根据需要转发声明类型别名。或者在声明成员时使用结构名称。 您可能想阅读comp.lang.c FAQ list - Question 1.14 你学会了如何使用struct
没有使用typedef
吗?因为那可能会阻止这个问题。
【参考方案1】:
在这个 typedef 声明中
typedef struct
int id;
node_t * otherNodes;
node_t;
结构定义中的名称node_t
是一个未声明的名称。所以编译器会报错。
你需要写例子
typedef struct node_t
int id;
struct node_t * otherNodes;
node_t;
或者你可以写
typedef struct node_t node_t;
struct node_t
int id;
node_t * otherNodes;
;
甚至喜欢
struct node_t typedef node_t;
struct node_t
int id;
node_t * otherNodes;
;
【讨论】:
【参考方案2】:我从内核代码中引用了struct list_head
的定义:
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/include/linux/types.h?h=v5.10.84#n178
所以我会这样写:
struct node
int id;
struct node * otherNodes;
;
typedef struct node node_t;
【讨论】:
以上是关于在数组中声明结构类型的元素的主要内容,如果未能解决你的问题,请参考以下文章