0
のためのインタフェース誰かがI/O(特定のファイル形式を扱う)を扱うためのCライブラリを構築したい場合には、彼らはかなり次を提供する必要が後に、いくつかの一般的なものを提供します。I/Oライブラリ
/* Open directly from file */
my_context_t* my_open_file(const char * filename);
/* Open from an existing memory block */
my_context_t* my_open_memory(const char* buf, size_t len);
は限り理解などとしてそこに他の人は、おそらくですが、矛盾を減らすために考えられ、この1、設計における危険な慣行や非効率である、またはベストプラクティスと考え何か他のものがありますか?このコンベンション/ベストプラクティスの名前はありますか?
あなたが示していることは、ファイルI/O用のAPIを作成するための「標準的な」方法ではありません。それは*可能な方法ですが、それは唯一の方法ではありません。だからあなたの質問に答える:いいえ、 "参照"インターフェイスはありません。 –
あなたが提示したものが、特定のファイルフォーマットに焦点を絞ったAPIのために、私が望むようなものを提供しているとは言えません。そのようなフォーマットは存在しますが、私が "ファイルフォーマット"を聞いたときに私がいつも考えているのは、より構造化され、アプリケーション固有です。 –
ベストプラクティス?それはすべて依存している、これは確かに一般的で、不合理なパターンではない。一般に、_caller_エンドのためのより便利で柔軟な基本インターフェースは、アプリケーションがプログレッシブ・パーサーにデータを供給することによってコールバックを反転させることです。もちろん、呼び出し元と呼び出し先の複雑さの間のトレードオフは、後でどれくらいの数が期待されるかによって決まります。私の小さなペットは、関数ポインタの過度使用です。 'my_read_cb'関数を宣言し、呼び出し側で実装する必要があります。必要に応じてそこからさらにルーティングすることができます。 – doynax