gpt4 book ai didi

c - 结构体声明两次

转载 作者:行者123 更新时间:2023-11-30 18:28:30 24 4
gpt4 key购买 nike

我多次遇到这样的代码,但似乎无法理解其背后的想法或必要性。我指的是为什么有些代码声明一个具有所述名称的结构,然后使用 typedef 然后再次声明该结构并仅添加该结构的内容?示例如下:

struct foo;
typedef struct foo *foobar;

struct foo {
void *data;
foobar example[];
};

这个声明是不是有点多余,不是可以像下面这样吗?

typedef struct foo *foobar;

struct foo {
void *data;
foobar example[];
};

最佳答案

您需要先定义 typedef,然后才能引用它。 (此外,有一种思想流派不鼓励使用指针类型定义,但这只是严格的约定。)

通常,在结构本身包含指向其自身其他实例的指针的情况下,或者更常见的是相互引用的结构集时,人们会看到该结构的“前向”typedef。例如:

typedef struct foo_s foo;
struct foo_s {
int val;
foo *next;
};

当然,您可以始终在结构定义中使用结构标记,即 struct foo_s,但如果希望一致地使用 typedef foo,那么需要在定义结构之前定义它。

关于c - 结构体声明两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46882272/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com