ModuleAで定義されている次の構造体について考えてみます。
typedef struct{
int A;
int B;
int C[4];
}myStructType;
myStructType MyStruct;
ModuleBからこの構造体を使用したい場合は、次のようにModuleAヘッダーで構造体を宣言します。
extern myStructType MyStruct;
ここまでは順調ですね。他のモジュールは、モジュールAヘッダーファイルをインクルードすることにより、MyStructの読み取りと書き込みを行うことができます。
今の質問:
モジュールAヘッダーファイルで構造体の一部のみを宣言するにはどうすればよいですか?たとえば、ModuleBがMyStruct.Cを読み書きできるようにしたい(または、少し簡単にするために、おそらくMyStruct.AまたはMyStruct.B)が、構造体にあることや要素について知っているとは限らない場合AとB。
編集:これは、コンパイル時に基本的にすべてのメモリ割り当てを行う組み込みシステムで行われることも指定する必要があります。これにより、コンパイル時にMyStructがどこにあるかを非常に確信できます(移動しません)。その周り)。
Edit2:他のモジュールが構造体の一部にアクセスするのを必ずしも阻止しようとしているのではなく、他のモジュールがMyStructを実行せずに個々の要素にアクセスできるようにしようとしていることも明確にします。おそらく、構造全体ではなく、単一の要素のみを気にします。