免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: emacsnw
打印 上一主题 下一主题

本人写的一个完整C范型容器(纯MACRO实现)。 [复制链接]

论坛徽章:
0
31 [报告]
发表于 2006-05-26 03:33 |只看该作者
原帖由 JohnBull 于 2006-5-25 00:49 发表


感谢楼主无私奉献!

只可惜不是GPL


因为还有很多需要改进的地方和功能,另外可能还有bug,大家就随便玩玩吧,等我有空了完善完善再说。

论坛徽章:
0
32 [报告]
发表于 2006-05-26 08:31 |只看该作者
不顶没天理。

论坛徽章:
0
33 [报告]
发表于 2006-05-26 10:27 |只看该作者
我也我加一点点吧,狗尾续貂吧!
一般常用的指针
typedef void * pvoid;
VEC_DECLARE(pvoid);

#define vec_get(type,v,index) \
    ((type *)v.x[index])

测试例子
    char aa[] = {0,1,2};
    VEC_pvoid pv;
    vec_init(pvoid,pv);

    vec_pushback(pvoid,pv,&aa[0]);
    vec_pushback(pvoid,pv,&aa[1]);
    vec_pushback(pvoid,pv,&aa[2]);

do{
    int _pr__i,_pr__m = pv.vsize;
    printf("%d\n",_pr__m);
    for(_pr__i = 0;_pr__i<_pr__m;++_pr__i)
        printf("%d ", *vec_get(char,pv,_pr__i));
}while(0);

论坛徽章:
0
34 [报告]
发表于 2006-05-26 10:55 |只看该作者
先说好。

vec_push()中如果要满了,申请新内存,malloc之后要判断是否申请到。直接假设成功是不可靠的。
之后转移现存数据时最好用一个memcpy(),而比循环结构赋值好些。

论坛徽章:
0
35 [报告]
发表于 2006-05-26 13:58 |只看该作者
呵呵,照这么发展,很快就可以 出  1.0版 了

论坛徽章:
0
36 [报告]
发表于 2006-05-26 14:27 |只看该作者
好贴

论坛徽章:
0
37 [报告]
发表于 2006-05-26 14:33 |只看该作者
没想到有这么多朋友关心这个package,看来unix下爱好C的同仁还是很多啊,赞。
总之,欢迎感兴趣的来玩这个包,支持大家增加/完善/改正它,为了更符合规范,我再次修改了原帖中头部的term,现在它是under BSD licence了,以后也应该不会再修改。
大家有好的代码可以贴出来共享 (比如priority queue等功能),要是我有空我也会再完善完善。

论坛徽章:
0
38 [报告]
发表于 2006-05-26 15:55 |只看该作者
这种代码一般用在嵌入式,如果不做嵌入式的话,不看为妙
有点像LOKI,走了相当曲折地弯路,依然能看见强大的地方
比较狠!

论坛徽章:
0
39 [报告]
发表于 2006-05-26 17:01 |只看该作者
感动,学习,期待。

论坛徽章:
0
40 [报告]
发表于 2006-05-26 21:15 |只看该作者
Great!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP