Библиотека UUID для C?

Я ищу библиотеку UUID для программирования в C, который имеет разумную вероятность того, чтобы быть установленным (или по крайней мере устанавливаемый диспетчером пакетов) на большинстве современных рабочих столов Linux и работает с pkg-config.

Следующие две возможности кажутся самыми очевидными:

Кто-либо имеет опыт с этими двумя и может рекомендовать один по другому или третьей возможности?

13
задан ptomato 2 April 2010 в 13:50
поделиться

1 ответ

Я использовал оба и определенно предпочитаю использовать 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.

18
ответ дан 1 December 2019 в 23:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: