我正在學習GLib GHashTable源代碼。 你可以在這裏看到鏈接的源代碼。GLib HashTable傳遞函數作爲參數
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」。 但我不知道這是什麼技術? 如何將函數作爲參數傳遞給另一個函數,並在運行時間內將其替換。
謝謝
他們是功能指針... http://stackoverflow.com/questions/840501/how-do-function-pointers-in-c-work,http://stackoverflow.com/questions/4295432/typedef-函數指針 – polarysekt