如:
typedef struct _cairo_clip cairo_clip_t;
为什么不直接使用_cairo_clip
?在一些代码中看到许多类似的定义。
背后的想法typedef
是让您跳过struct
关键字。与 C++ 不同,C 不允许您这样做:
struct _cairo_clip {
int a;
float b;
};
_cairo_clip cc; // Not allowed
struct _cairo_clip cc; // Allowed, but requires a keyword
如果您尝试直接使用_cairo_clip
,则需要调用它struct _cairo_clip
。
struct _cairo_clip
比 更详细cairo_clip_t
。
使用 typedef 还提供了一些抽象,因为这意味着它cairo_clip_t
可以实现为内置类型或实现为 a struct
,而不会导致客户端代码的语法发生变化。