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 函数。
我正在学习 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 函数。