GLib HashTable传递函数作为参数

时间:2015-07-21 04:08:41

标签: c++ c glib

我正在学习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”。 但我不知道那种技术是什么? 如何将函数作为参数传递给另一个函数并在运行时替换它。

谢谢

1 个答案:

答案 0 :(得分:0)

你传递param是一个点,你定义哈希计算函数。所有函数进程都是回调函数。哈希表只是将param传递给你的equel函数。