64

ときどき、次のような C プログラムをコンパイルする人を見かけます。

gcc -o hello hello.c hello.h

私が知っているように、ヘッダー ファイルを次のように C プログラムに入れるだけです。

#include "somefile"

C プログラムをコンパイルしますgcc -o hello hello.c

ヘッダー ファイルをコンパイルする必要があるのはいつですか、またはその理由は?

4

6 に答える 6

14

では、アクティブ コードとパッシブ コードの違いを理解しましょう。

アクティブ コードは、関数、プロシージャ、メソッドの実装、つまり、実行可能なマシン コードにコンパイルする必要があるコードの一部です。これを .c ファイルに保存し、コンパイルする必要があることを確認します。

パッシブ コード自体は実行されませんが、さまざまなモジュールが相互に通信する方法を説明する必要がありました。通常、.h ファイルにはプロトタイプ (関数ヘッダー) と構造体のみが含まれます。

マクロは例外であり、正式にはアクティブな部分を含むことができますが、それらは単純な置換で構築 (前処理) の非常に早い段階で使用されていることを理解する必要があります。コンパイル時に、マクロはすでに .c ファイルに置き換えられています。

もう 1 つの例外は C++ テンプレートで、.h ファイルに実装する必要があります。しかし、ここでマクロに似た話があります。それらは初期段階で置き換えられ (インスタンス化)、正式には、互いのインスタンス化は別のタイプです。

結論として、モジュールが適切に形成されていれば、ヘッダー ファイルをコンパイルするべきではないと思います。

于 2013-07-02T03:36:09.730 に答える