5
Cでのモジュラーファームウェア設計用のメモリ割り当ての可能性
モジュラーアプローチは一般的に非常に便利(ポータブルでクリーン)であるため、可能な限り他のモジュールから独立したモジュールをプログラムするようにします。私のアプローチのほとんどは、モジュール自体を記述する構造体に基づいています。初期化関数は主なパラメーターを設定し、その後、ハンドラー(desriptive構造体へのポインター)がモジュール内の任意の関数に渡されます。 今、私はモジュールを記述する構造体のためのメモリの割り当ての最良のアプローチが何であるか疑問に思っています。可能であれば、私は次のものが欲しいです: 不透明な構造体。したがって、構造体は、提供されたインターフェイス関数を使用することによってのみ変更できます。 複数のインスタンス リンカによって割り当てられたメモリ 次の可能性があり、それはすべて私の目標の1つと矛盾しています。 グローバル宣言 複数のインスタンス、リンカーによって割り当てられますが、構造体は不透明ではありません (#includes) module_struct module; void main(){ module_init(&module); } malloc 不透明な構造体、複数のインスタンス、ただしヒープ上の割り当て module.h内: typedef module_struct Module; module.c init関数、mallocおよび割り当てられたメモリへの戻りポインタ module_mem = malloc(sizeof(module_struct )); /* initialize values here */ return module_mem; main.c内 (#includes) Module *module; void main(){ module = module_init(); } モジュール内の宣言 リンカによって割り当てられた不透明な構造体、事前定義された数のインスタンスのみ 構造体とメモリ全体をモジュールの内部に保持し、ハンドラーまたは構造体を公開しないでください。 (#includes) void main(){ …