2012-03-13 6 views
1

ncmpcppのソースコードを見ていて、これを見ました。実装ファイルがないときにヘッダファイルを含める?

#include <mpd/client.h> 

このファイルの中には、ncmpcppで使用される関数があります。しかし、それらは単なるヘッダーです。 cppファイルはどこかに存在しなければなりませんか?私は同じディレクトリでそれらを見つけることができませんでした。彼らはどこにいる?

また、含まれているものが<と>で囲まれている場合、どのように見えるかはわかりますか?

答えて

4

サードパーティのライブラリの場合は、ソースコードが含まれていない可能性があります。それは必要でもありません。ヘッダーで宣言されているすべてのシンボル(使用する予定のもの)は、おそらくヘッダーとともに出荷された.libファイルにエクスポートする必要があります。

templateがある場合を除き、インラインである可能性があります。

コードを自分でコンパイルする場合は、cppファイル、またはより一般的には実装ファイルのみが必要です。あなたはそうしない。ヘッダーとバイナリだけを持つモジュールを使用できます。

もちろん、すべてのファイルが一般的に含まれているオープンソースプロジェクトの例がありますが、商用製品の場合、なぜソースコードをリリースするのですか?競合他社をただコピーして新しい名前で再販しているのは何ですか?

あり<>または""で区切られたヘッダを探す場所を伝える標準的なルールはませんが、一般的なコンセンサスが<>が(stringまたはiostreamのような)システムヘッダーのために使用されることで、自身のヘッダの""myclass.h )。コンパイラに最初に見える場所を指示するだけです。

+0

これはソースからビルドしたものですが、なぜ実装ファイルが必要でないのですか? –

+0

@javascriptninja: "動的リンク"を参照してください –

+0

モジュールを解体するときに必要でした。これは私が言ったことです。 –

2

ソースファイルはコンパイラがリンクできるということで(静的または動的にリンク)ライブラリがある場合(非常に稀にあなたが.defファイルを必要としないかもしれませんが)、これらは一般的に.aまたは.libファイルである必要はありません。

検索パスについては、MSVCの場合はthis、GCCの場合はthisを参照してください。

関連する問題