c++ - GLib HashTable 将函数作为参数传递

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

谢谢

最佳答案

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

关于c++ - GLib HashTable 将函数作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31530206/

相关文章:

c++ - 为什么要使用 std::forward?

c++ - 写在一个txt文件中

c++ - 如何在保持顺序的同时填充一个整数数组?

c - 在 C 中放气和膨胀 (zlib.h)

c - 为什么要将函数定义放在 .h 文件中?

c++ - 对多个类重复使用运算符<<

c++ - 初学者有什么实际使用的好项目

embedded - 用于嵌入式 Linux 的 GLib?

c - 可以运行多个主循环吗?

c - g_key_file_get_string() 如何工作?