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;