UUID 生成器 (uuid)
生成符合 RFC 4122 第4版的 UUID 字符串。
格式
xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx
- 版本号固定为
4(第3段首字符),表示随机生成 - 变体标识
y为8、9、a、b之一(第4段首字符),符合 RFC 4122 变体规范 - 其余字符为随机十六进制,共 36 字符(含 4 个连字符)
示例:f47ac10b-58cc-4372-a567-0e02b2c3d479
API
const char * uuid4(char * buf);
生成并返回 UUID v4 字符串指针。
- 若
buf为NULL,使用内部静态缓冲区,每次调用会覆盖上一次的结果 - 若
buf非NULL,写入用户提供的缓冲区(至少 37 字节),结果可安全保留
当
buf为NULL时非线程安全,不可在多线程中并发调用。
使用示例
生成唯一标识
const char * id = uuid4(NULL);
/* id 指向内部静态缓冲区,下次调用会失效 */
保留 UUID 值
char buf[37];
const char * id = uuid4(buf);
/* buf 中保存了 UUID 值,可安全保留 */
动态字符串保存
struct ds_t * ds = ds_alloc();
ds_copy(ds, "%s", uuid4(NULL));
/* ds 中保存了 UUID 值,不受后续 uuid4 调用影响 */
ds_free(ds);