如何在glib哈希表中使用long作为键?

时间:2018-03-27 12:42:29

标签: c hashtable 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()

我可以使用哪种类型来获得一个long和一个值的键,该值是我定义的结构的指针?

1 个答案:

答案 0 :(得分:0)

总结评论:

假设您构建的系统中指针的位数至少与long一样多(大多数系统都是如此),是的,您可以将其转换为.background-red{ background-color: rgb(153, 50, 50); } .background-green{ background-color: rgb(29, 102, 29); } 并使用gconstpointer。你确实以这种方式将这个事实依赖于你的代码。

否则:不要使用g_direct_*,而应使用longgint作为您的值,并将指针传递给gint64g_int_*。在可移植代码中使用g_int64_*(每个系统的实际大小可能不同)无论如何都不方便。

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