C库CCAN

最近项目需要提供c库的sdk库给客户使用

使用c++写业务,习惯了使用STL库、string等模块的使用,突然用c来整,没有现成的容器,只有数组,字符串得用char *,写起来麻烦好多

秉着不重复造轮子的思想,就网上找能用的c封装的可变数组的库,就找到了这次的主角,号称c语言中的“Boost”--CCAN

官网:http://ccodearchive.net/

Github:https://github.com/rustyrussell/ccan

使用

根据官方的说明,有两种使用方法

  1. 将模块放入项目的 ccan/ 子目录中。 添加“config.h”并编译 ccan/* 中的每个 .c 文件(给出了config.h的例子,可以用提供的configurator工具生成)
  2. 把想要用的模块的源码添加到自己的项目中直接使用

第1种方式实力有限,不清楚是怎么用的

我采用的是第2种方式

因为提供的源码,如果要用其中某个模块,下载该模块的代码,添加到自己的工程中,CCAN每个模块都是独立的,依赖很少

以darray可变数组为例

下载下来源码只有一个darray.h

添加到工程就能直接用,不过代码中有#include "config.h"的依赖,注释掉就好了

这个是比较简单的依赖最少的了

比如bytestring char *的浅封装,下载下来后发现依赖挺多的

添加到工程中最好保留原有文件夹形式,array_size、build_assert、compiler、mem是CCAN比较通用的模块,其他模块也会依赖到,解决好include的问题就OK了,这也算开发的基本技能了吧

使用过几个模块,linux和windows下都能够编译使用,应该是用原生c写的,是支持跨平台

常见的业务模块

base64base64编解码(用法挺简单的)
bytestringchar *的浅封装,类似Qt QByteArray
darray可变数组(c++用vector容器习惯了,用c的数组来写业务有点蛋疼)
deque双端队列
jsonjson的生成和解析(用法挺简单的)
list链表
tap单元测试(下载的代码会包含一些测试的代码,会用到这个)
ttxml解析xml
utf8utf8编解码

更多的模块查看官网的列表http://ccodearchive.net/list.html

结语

我认为有现成的轮子,拿来做基本的业务开发完全是够用的,至于这些代码的效率如何,没有测试对比过,有需求的可以自己测试一下

当然也可以用来学习,一些简单模块可以参照着自己实现,毕竟提供的是源码

github上看CCAN算是好几年以前就开始的项目了,不过最近几个月还是有更新的,贡献代码的人还挺多的,不算是没人维护的项目

CCAN我自己目前用得也不算多,觉得这东西挺方便挺实用,安利一波

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值