【发布时间】:2018-03-27 12:42:29
【问题描述】:
在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 的键和一个指向我已定义的结构的指针的值?
【问题讨论】:
-
为什么不像手册上说的那样使用
gconstpointer? -
在
gconstpointer中转了我的多头? -
假设您为一个指针至少与 long 一样多的系统构建,是的,您可以转换它并使用
g_direct_*。否则:不要使用long,而是使用int或int64_t作为您的值并将指向它们的指针传递给g_int_*或g_int64_* -
正如@marcolz 所说,为什么要使用long? long 与 int 相同或更大(取决于编译目标),所以如果你不使用 int 我假设是因为你知道 long 可能大于 int,这很可能是 int64_t。知道这一点,请按照 marcolz 的说明进行操作..
-
在我的 .h 文件中我可以
#define G_MININT64 LONG_MIN和#define G_MAXINT64 LONG_MAX然后 int64 将等于 Long