GLib HashTable 将函数作为参数传递

GLib HashTable passing the functions as the parameters

我正在学习 GLib GHashTable 源代码。 您可以在 link 此处查看源代码。

https://github.com/GNOME/glib/blob/master/glib/ghash.c

https://github.com/GNOME/glib/blob/master/glib/ghash.h

GHashTable *g_hash_table_new (GHashFunc  hash_func,
                                GEqualFunc key_equal_func)

g_hash_table_new 函数在此处创建基本哈希 table。 我的问题是参数。 前两个参数“GHashFunc hash_func, GEqualFunc key_equal_func”传递给函数。

ghash.h中没有hash_func和key_equal_func,它们只是符号。它们将被真正的哈希函数所取代。 这里两个函数怎么变成参数了?

我知道 ghash.h 文件中有一些哈希函数,例如:

guint g_int_hash (gconstpointer v) 
guint g_str_hash (gconstpointer v)

这些功能将在 运行 时间内传递给 "g_hash_table_new ",以取代 "hash_func" 和 "key_equal_func "。 但我不知道那是什么技术? 如何将一个函数作为参数传递给另一个函数并在运行时间内替换它。

谢谢

你传递的参数是一个点,你定义哈希计算函数。所有函数过程都是回调函数。 hash table 只需将参数传递给您的 equel 函数。