Redian新闻
>
三星 30pin的线跟苹果的一样吗?
avatar
三星 30pin的线跟苹果的一样吗?# PDA - 掌中宝
d*w
1
看到一篇lighttpd源码剖析,http://www.cnblogs.com/kernel_hcy/archive/2009/10/23/1588873.html,发现它的数据结构设计的挺精妙的,比如在定义array时候
通过DATA_UNSET宏,其他类型在定义中直接引用DATA_UNSET宏来模拟继承
通用数组中存放的数据可以是通用数组,这样可以形成多维的通用数组。
typedef struct {
 DATA_UNSET;
 array *value;
} data_array;
之前看其他开源的代码,有种技巧是使用函数指针和二维数组来实现多态,不过我记得
不大清了,请高人指点完整写法。
比如:
typedef struct {
int (*init)(events *ev);
const char *description;
int num;
} event__t;
int call_back1(events *ev);
int call_back2(events *ev);
int call_back3(events *ev);
event_t handlers[] = { {call_back1, "aaa", 2}, {call_back2, "bbb", 2}, {call
_back3, "ccc", 3}};
switch(type) {
CAR:
handlers[CAR]->init();
...
}
avatar
L*y
2
能不能混着用?
avatar
p*c
3
no
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。