gpt4 book ai didi

c - typedef 结构体用法

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

我不能说我使用了很多 typedef,但在 Cocoa Touch 中,它有点令人困惑。以 CoreGraphics 自己对 CGPoint 的定义为例:

struct CGPoint {
CGFloat x;
CGFloat y;
};
typedef struct CGPoint CGPoint;

如果我要根据我在书中看到的来定义这一点,请:

typedef struct {
CGFloat x;
CgFloat y;
} CGPoint;

它似乎工作得很好。那么它们所做的事情有什么不同,还是做完全相同的事情?

最佳答案

Apple 的示例与此相同。

typedef struct CGPoint {
CGFloat x;
CGFloat y;
} CGPoint;

不同之处在于,在具有 Apple 定义的代码中,您可以将变量定义为 struct CGPointCGPoint。在您的 typedef 中,您基本上创建了一个无名结构,然后将其称为 CGPoint,而不是一个名为 CGPoint 的结构,您也将其称为 CGPoint。

您通常会看到 typedef 将“struct”部分替换为诸如 CGPoint_t

编辑:考虑以下内容。

typedef struct {
List *next; // <-- compiler error
} List;
为什么?因为编译器还不知道类型“List”。

typedef struct List {
struct List *next; // <-- works because you named your struct, and used that name here
} List;

如果您没有命名结构,则不能将其自身(指针)包含为成员。

关于c - typedef 结构体用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15462475/

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