百科问答小站 logo
百科问答小站 font logo



有哪些值得推荐的小型 C 语言开源项目? 第1页

  

user avatar   liyingxin1412 网友的相关建议: 
      

可以推荐一个小而美的json-parser:900+行代码写得非常典雅精致。可以学习到C语言中面向对象的写法、递归解析的架构、与内核近似的编码风格、简洁的接口设计,并且也非常方便引入项目中作为轻量级的json解析器。由于是C++ Workflow的作者写的,所以代码质量和开源项目的长期投入都有保证~~~

1、基于ANSI-C,完整支持ECMA-404 json标准;

2、轻量级:只有json_parser.hjson_parser.c ,依赖只有linux内核中的两个经典数据结构rbtree.h和list.h;

3、高性能:虽然不是最快的,但实测性能大概是cJSON的1.5倍,jsoncpp的10倍左右;

4、简洁的接口,可以直接执行make命令把test.c编译出来感受一下:

       int main () {   ...     json_value_t *val = json_value_parse(buf); // 解析json文档产生json value     if (val)     {          print_json_value(val, 0);           json_value_destroy(val); // 销毁json value     }    ...      

5、C中面向对象的写法,以及熟悉的linux kernel编码风格,比较赏心悦目:

       /* 从json value中获得string */ const char *json_value_string(const json_value_t *val); /* 从json value中获得num */ double json_value_number(const json_value_t *val);  /* 从json value中获得json object */ json_object_t *json_value_object(const json_value_t *val);  /* 返回object大小 */ int json_object_size(const json_object_t *obj);  /* 查找name下的value。返回json value对象 */ const json_value_t *json_object_find(const char *name, const json_object_t *obj);   /* 遍历json object。这不是一个函数,是一个展开成一个for循环的宏 */ json_object_for_each(name, val, obj)      

6、内部典雅的递归解析架构:用户入口json_value_t *json_value_create(const char *doc)会进入到递归入口__parse_json_value(doc, &doc, 0, val); 然后递归地对json中可以嵌套的数组、对象的关系装到list/rbtree中。

另外,这个json-parser也已经引入到C++ Workflow项目中。如果也想看看C语言开源项目的其他内容,Workflow的kernel目录下基本都是C的实现,不仅有基本的IO多路复用线程池消息队列实现,还有与event loop不一样的epoll/kqueue新玩法:

GitHub - sogou/workflow: C++ Parallel Computing and Asynchronous Networking Engine

每一个模块单独拎出来都很好玩,感兴趣的话也可以围观~~~




  

相关话题

  C语言中,为什么指向指针的指针的类型是int **?类型的话直接int*不就行了? 
  如何评价腾讯魔方工作室总监 Milo Yip 的技术功底和开源贡献? 
  为什么几乎所有的开源数据库中间件都是国内公司开源的?并且几乎都停止了更新? 
  C语言初学者该怎样去更好的学习C语言? 
  为什么几乎所有的开源数据库中间件都是国内公司开源的?并且几乎都停止了更新? 
  为什么著名的轮子很少有用 Lisp 写的? 
  为什么 C 语言没有被 C++ 取代? 
  为什么编程语言语法的设计不往缩小与自然语言的差别的方向发展,或者说在这个方向发展得这么慢呢? 
  c/c++怎么把一个bool数组(刚好8个元素)转换成char? 
  C语言中for语句的赋初值用int i=1和i=1有什么区别? 

前一个讨论
如何看待第八集团军司令员Мордвичёвым 将军在被乌克兰军方击毙九天后神秘复活?
下一个讨论
奶粉的关键在于奶源,现在对奶源原产地有相关的立法保护吗?





© 2024-12-18 - tinynew.org. All Rights Reserved.
© 2024-12-18 - tinynew.org. 保留所有权利