C-如何将longs用作glib哈希表中的钥匙



g_hash_table_new(HashFunc hash_func, GEqualFunc key_equal_func)

HashFunc他们具有这种类型:

  • g_direct_hash()
  • g_int_hash()
  • g_int64_hash()
  • g_double_hash()
  • g_str_hash()

gequalfunc他们有这种类型:

  • g_direct_equal()
  • g_int_equal()
  • g_int64_equal()
  • g_double_equal()
  • g_str_equal()

我可以使用哪种类型的键,该密钥是我定义的struct的长音和值?

从注释中总结:

假设您为指针至少与长度一样多的系统构建(在大多数系统上(,是的,您可以将其施放到gconstpointer并使用g_direct_*。但是,您确实以这种方式依赖于该事实。

否则:请勿使用long,而是使用gintgint64作为您的值,然后将指针传递给g_int_*g_int64_*。使用long,每个系统的实际尺寸可能会有所不同,无论如何,在便携式代码中都不方便。

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

最新更新