C言語では、ファイルf.c
の中にstruct s
を定義するとします。このstruct
に他の人がアクセスできるようにしたくないので、f.h
に入れないでください。私のプロジェクトでは、g.c
を含む他の多くのファイルがstruct s
のf.c
にアクセスしたいと思っています。他のファイルからヘッダーにアクセスできない構造体を作成する
これを可能にする方法はありますか?私はs
がで宣言されたグローバルextern
変数でなければならないと考えています。コンパイル時にリンクされます。私はこれが可能かどうか、またはこのようなことをやり遂げる正しい/最善の方法であるかどうかはわかりません。
タイプの定義は、その使用の前に利用可能でなければなりません。ヘッダーを使用するか、構造体の定義を貼り付けてコピーします。翻訳単位間で型を共有する方法はありません。 – DeiDei
この構造体を作成して変更するには、 'f.c'にAPIを作成する必要があります。呼び出し元に 'void * 'を渡して、フィールドにアクセスすることはできません。 –
他の人がアクセスできる*を定義する*。 – rustyx