我正在学习GLib GHashTable源代码。 您可以在此处查看链接中的源代码。
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 函数在此处创建基本哈希表。 我的问题是参数。 前两个参数“ 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”。 但我不知道那种技术是什么? 如何将函数作为参数传递给另一个函数并在运行时替换它。
谢谢
答案 0 :(得分:0)
你传递param是一个点,你定义哈希计算函数。所有函数进程都是回调函数。哈希表只是将param传递给你的equel函数。