C语言中类似于Boost的库

35

你能推荐一些在C环境下可靠的经过同行评审的库(类似于C++的Boost库)吗?这些库应该提供哈希、线程、进程间通信、链表和智能内存管理等功能...

这个环境是嵌入式系统,不是非常小型的系统,但也不是个人电脑!


我之前忘了提到环境是嵌入式系统(我不是指非常精简的系统,但也不是PC)。Glib的建议在那里也适用吗? - Nick Berardi
我也在想这个问题 - 因为我正在使用ARM微控制器平台进行开发。 - jim
1
只要你从源代码编译库,它应该是可以的。 - Nicholas Mancuso
不是很确定,但是你可以自己制作一个 C 封装库。请看这里:https://www.linkedin.com/pulse/using-boost-c-library-from-darmawan-salihun - Jim Fell
utlist.h、uthash.h等提供了一些所需的功能,请查看troydhanson github存储库 - Torsten
6个回答

16

我也为GLib点赞,此外,它还有自己的线程 API,因此如果你不想学习 pthreads,也没有关系。

不确定在 C 中是否存在“智能内存管理”的概念,在没有析构函数和操作符控制的情况下并不容易实现。但是,同样地,GLib 拥有许多面向内存的数据结构和工具,可以真正地使生活更轻松。

顺便说一句,我不是 GLib 团队的成员,只是我真的很喜欢它。 :)


难道没有像Boost一样具有正则表达式功能的库吗? - user4710450
@Ehsan 我不知道,我从来没有使用过Boost。而且,这种提问方式现在有点不受欢迎。 - unwind
你知道C语言的正则表达式库吗?有比regex.h更好的吗? - user4710450
@Ehsan 你读了你正在评论的回答吗? - unwind
警告:Glib使用的是LGPL许可证,比Boost许可证更加严格。因此在使用前请仔细阅读细则。 - user694733
有点晚了,但是C语言拥有世界一流的正则表达式引擎。Onigmo、Oniguruma或者广泛使用的PCRE。 - yeyo

7

请查看 Apache Portable Runtime (APR) 项目。

该项目具有以下特点:

  • 内存管理API
  • 线程、互斥锁
  • 文件I/O
  • 原子操作
  • 哈希表、数组
  • 网络套接字和协议
  • 共享内存、mmap

更不用说它是可移植的了。


6

我不确定你是否能找到一款包含所有功能的库,但你可以查看glibpthreads,这两个库可以涵盖大部分功能。


不错。已经加入我的查看列表中了。 - jim

5

请查看Boehm GC,它是一种广泛使用的保守式垃圾收集器,适用于C(或C ++),在智能内存管理方面可能符合您的需求。


当混合使用GC和非GC代码时,需要小心,例如将对GC块(例如使用GC_MALLOC创建的块)的引用仅存储到非GC块(例如使用malloc创建的块)中,可能会过早地回收该块!(至少根据GC的语义,我自己没有尝试过,请纠正我如果我错了。)想知道是否有一些好用的GC-aware实用库。 - Paggas

2

我也会加入GLib的行列。请记住,C语言对于复杂数据结构没有提供任何语法糖,所以在GLib中需要使用大量的强制类型转换和长函数名,但是它真的非常出色和高效,只需多些表达!


2
关于Glib的使用。
您可能只需要选择所需内容并进行交叉编译。因此,如果您只需要线程包-请编译该包而不要选择所有内容。
我正在使用Python VM做同样的事情。 PyMite适用于微控制器,并且不使用所有功能。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接