我如何在 glib hash table 中使用 long 作为键?

How can i use longs as key in glib hash table?

g_hash_table_new(HashFunc hash_func, GEqualFunc key_equal_func)

HashFunc 他们有这样的类型:

GEqualFunc 他们有这样的类型:

我可以使用哪种类型来拥有一个 long 键和一个指向我定义的结构的指针的值?

根据评论总结:

假设您构建的系统的指针至少与 long 一样多(在大多数系统上都是如此),是的,您可以将其转换为 gconstpointer 并使用 g_direct_* .不过,您确实会以这种方式将对这一事实的依赖构建到您的代码中。

否则:不要使用 long,而是使用 gintgint64 作为您的值,并将指向它们的指针传递给 g_int_*g_int64_*。使用 long,每个系统的实际大小可能不同,在可移植代码中无论如何都不方便。

g_direct_* 使用指针本身而不是它们指向的值。