如:
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,而不会导致客户端代码的语法发生变化。