我想创建一个带有指向相同类型属性的指针的结构。
理想情况下,我想要这样的东西,但这会导致编译错误:
typedef struct {
int data;
Node *next;
} Node;
我在这个场景中想要的解决方案是:
typedef struct Node_s {
int data;
struct Node_s *next;
} Node_t;
这是一种有效的方法还是会导致任何明显的问题?
这是在 C 中声明自引用结构的有效且惯用的方法。
您不必为标签和 typedef 名称引入不同的名称,以下内容也很好:
typedef struct Node {
int data;
struct Node *next;
} Node;
不存在名称冲突,因为这些名称位于不同的命名空间中。
另一种有效的方法是这样的:
typedef struct Node Node;
struct Node {
int data;
Node *next;
};
您可以将
struct
预先声明为
typedef struct Node_s Node;
并在下面声明其字段。