私はCプログラムを作成し、gcc 4.4.6を使用してコンパイルしています。私はC++コンパイラを使いたくありません。Cプログラミングのデカップリングインターフェイスから構造体前方宣言を使用して
私はコンポーネントを実装していますが、私はこのコンポーネントのいくつかのインスタンスを実行時にほかのコンポーネントが所有し、所有しています。
インターフェイスの定義を実装から切り離し、その実装で使用する内部構造とデータ型を隠す手段として、前方構造宣言を使用するように見えました。
インタフェースファイル:component.h
struct _hidden_implementation_type;
typedef struct _hidden_implementation_type visible_type_to_clients;
int component_function1(visible_type_to_clients instance);
実装ファイル:component.c
struct _hidden_implementation_type
{
int foo;
};
クライアントファイル:main.cの
int main(int argc, char** argv)
{
visible_type_to_clients a;
return component_function1(a);
}
この作品を作成するにはどうすればよいですか?それ以外の方法として、複数のコンポーネントのインスタンス化を許可し、パブリックインターフェイスと実装の間のデカップリングを提供する方法はありますか?
通常のアプローチは、構造の内部の詳細がクライアントに表示されていないタイプを構成する*ポインタ*を含む:
ここで比較のために2つの実装です。 –
'instance_type'はインスタンスであり、型ではありません。 – Olaf
それはタイプミスでした。 – Rire1979