13

我正在寻找一个用于在 C 中编程的 UUID 库,它有合理的可能性在大多数现代 Linux 桌面上安装(或至少可由包管理器安装),并且与pkg-config.

以下两种可能性似乎最明显:

有没有人有这两个方面的经验并且可以推荐一个而不是另一个,或者第三种可能性?

4

1 回答 1

19

我都使用了,而且我绝对更喜欢 util-linux-ng(以前在 e2fsprogs 中)之一。为了可移植性,我让我的软件同时支持两者,并使用 autoconf/cmake 宏来检测安装了哪一个。

对我来说,OSSP 的主要问题是它无缘无故地滥用了 C 语言中的面向对象。UUID 只是一个 128 位的数字,可以用 char[16] 数组表示。UUID 通常与另一个结构相关联(UUID 用作此类结构的键或标识符),因此如果您可以将该数组内联到结构本身中应该会很好。

使用 OSSP UUID,它为您提供了一个uuid_t*指向动态分配对象的指针,该对象拥有比 UUID 值更多的状态。如果您使用数以万计的对象,这显然会使程序变慢,使用更多内存并导致更多内存碎片。最后,为了使 OSSP UUID 可用,您必须使用它来生成 UUID(这涉及 4 个调用:uuid_create、uuid_make、uuid_export 和 uuid_destroy)并自己使用 UUID 值。使用 util-linux-ng,只需一个调用:uuid_generate。

于 2010-04-02T14:29:15.110 回答