首页 > typedef命名空间和不透明指针的使用时机

typedef命名空间和不透明指针的使用时机

1.背景:
最近在学习nginx,看到在ngx_core.h和ngx_conf_file.h中对typedef的不同使用:
1)//ngx_core.h中大量诸如以下的定义:
typedef struct ngx_module_s ngx_module_t;

2)//ngx_conf_file.h中的使用情况:
typedef struct {
//...
} ngx_core_module_t

2.问题:
我认为第1)种情况是不透明指针的使用方法,目的是隐藏数据实现,但不清楚第2)种情况的使用目的。请教一下以上两种typedef使用方法的目的和技巧。
感谢!


第 1 种情况是不透明结构体, 相对的, 第 2 种情况不就是 "透明" 结构体? 你可以通过指针直接访问结构体中所有成员.

其中 typedef 给结构体一个别名, 就可以这样使用:

ngx_core_module_t *p;

否则需要这样使用:

struct ngx_core_module_t *p;
【热门文章】
【热门文章】