1
複数の.cファイルで構造体をアクセス可能にするためにexternを使用できないのはなぜですか?C言語の構造体にexternを使用する
私は、structの定義を.hファイルに入れ、その.hファイルをすべての.cファイルに含めることをお勧めします。私たちはその構造体を使用しますが、なぜexternを変数として使用できますか?構造体?変数がどこにある
- が、我々はそれが
- ビルド.cファイルの両方を使用することにしたい.Cファイルに.Cファイルに1を
- のextern変数を変数を定義します。extern変数に
定義されているものと使用されているもの
しかし、どのような構造の場合ですか?
どこか間違っている場合は私を修正してください。
Cは断片的なコンパイル用に設計されているため、別々のファイルをコンパイルしてから一緒に作成することができます。構造体を使用するには、そのメンバにアクセスするコードが含まれます。構造体定義がそれほど後で利用できない場合、そのコードはどのように放出されるのでしょうか? – StoryTeller
変数は(実行時に)記憶域を持つものです。したがって、 'extern'と' static'はリンカが同じ名前(extern')または別個のストレージ( 'static')を持つ2つのシンボルを与えるためのヒントです。 (これはあなたが想像する方法です - 標準では別の言葉で言います...)しかし、型(例えば 'struct')はコンパイル時に評価されます。コードが使用されるまで(例えば、変数内で)コードを生成しません。したがって、ストレージクラス(externやstaticなど)は型に影響を与えません。タイプを共有したい場合は、すべてのCファイルで再定義してください(たとえば、 – Scheff
... Cファイルに含まれているヘッダーに入れてください)。 – Scheff