私はHashtableが任意の種類の値を保持できるように、値が(void *)である値にキーをマップするHashtable構造体で作業しています。C - passポインタとして事前定義された関数
これらの値を解放できるようにするために、Hashtableのdeconstructorは引数として解放関数へのポインタをとります。私の場合、char *やint *のような基本型を解放するつもりです。 free()関数へのポインタを渡すことは可能ですか?これは基本型を扱うことができるからですか?このような
何か:
FreeHashTable(hashtable_name, free);
これを試したときに遭遇した問題は何ですか? –
コンパイラのエラーが発生していないようですが、動作していると思いますが、これがFreeHashTableにフリー関数を渡す方法であることを確認したかったのです。言い換えれば、呼び出しは、ローカルで定義された変数がフリーであると期待していませんか? – theeggman85
さて、どうやって知っているのですか?あなたはコードを設計しているので、あなたのコードが期待するものはあなただけです! 2番目の引数を 'void(*)(void *)'にすると、 'free'を含む' FreeHashTable'に関数ポインタを渡すことができます。これは本当にまともなアプローチのようです。 –