ハッシュテーブル (データのリンクされたリストへのポインターの配列) といくつかのサポート関数 (要素の挿入、テーブルの削除など) による C++ STL コンテナー マップ (連想配列) の C 実装を記述することになっていた... これらすべてを正常に記述しました。ただしforeach(table, function_ptr)
、テーブル内のすべてのデータに対して渡された関数を呼び出す関数を除きます (印刷内容...)。
どのパラメーターを に渡す必要があるのか わからないため、ここで少し立ち往生しているためfunction_ptr
、それは普遍的です。今のところ、それは不可能だと思います。
たとえばprintfにポインタを渡したい場合は簡単です。プロトタイプは次のforeach
ようになります
foreach(table_t *t, int (*function_ptr)(const char *fmt, ...))
そして、このようなすべてのデータノードに対してそれを呼び出すだけです
function_ptr("%s, %d\n", node.key, node.data)
しかし、これを使用して、いつか自分の関数を渡したいという気が変わったら、caller-function と関数のコードも変更する必要がありforeach
ます。
このようなことを簡単に行う方法はありますか?