0

ソースファイルとヘッダーファイルの内容を理解するのに苦労しています。仮定する

1)場所にfunctions.cpp「int add(int x,int y)」という名前の関数を含むソースファイル( )があります/Users/xyz/Desktop/functions.cpp

2)ソースファイル(functions.cpp)の関数宣言functions.hを含むヘッダーファイル( )を配置する/Users/xyz/Documents/function.h

3)「main()」関数を含む他のソース ファイル( main.cpp)は、「functions.cpp」で定義された「add()」関数を呼び出す必要があります。ソース ファイル「main.cpp」は次の場所にあります。/Users/xyz/Downloads/main.cpp

これらのファイルを別の場所に配置して、これらの概念をよりよく理解できるようにしています。

では、使用方法にリンクfunction.cppするにはどうすればよいですか。main.cppfunctions.h

   #include "   "

上記で使用する必要があるパスは何includeですか?

また、.hファイルは他の場所で定義されている関数の宣言を提供し、コンパイラーが他のファイルまたはまだ定義されていない関数で定義されている関数を呼び出すには宣言が必要であることを理解しています。そうですか?間違っている場合は修正してください。

4

5 に答える 5

5
#include "functions.h"

ソース ツリーをどのように配置するかをコードが認識しないようにする必要があります。パスをハードコードすることは、このコードを維持しなければならない人 (今から 6 か月後のあなたも含まれます) の憎しみを獲得することです。

ビルド システムは、それが何であれ、パスを処理できます。それは次のように簡単です。

g++ -I/Users/xyz/Documents -c functions.cpp

宣言/定義がどのように機能するかについてのあなたの声明は基本的に正しいです。

于 2012-08-03T21:21:24.563 に答える
3

最初の質問には答えがありません。C++ は、ヘッダー ファイルの検索方法を定義していません。それはコンパイラ次第であり、すべての方法が少し異なります。答えが必要な場合は、コンパイラのドキュメントで詳細を調べる必要があります。すべてを同じディレクトリに置き、心配するのをやめることをお勧めします。

あなたの質問の 2 番目の部分では、あなたの理解はかなり良いように思えます。

于 2012-08-03T21:20:30.503 に答える
0

ヘッダー ファイルへの正確なパスをメインに含める必要があります。

#include "/Users/xyz/Documents/function.h"

この助けを願っています。

よろしく。

于 2012-08-03T21:19:30.650 に答える
0

functions.hinfunctions.cppmain.cppusing を含めてから、 と の両方を#includeコンパイルします。次に、リンカーは、結果として得られる 2 つのオブジェクト ファイルをリンクします。main.cpp に functions.h を含めると、main.cpp ファイル内の functions.h から関数を呼び出すことができます。main.cppfunctions.cpp

ファイルのパスについては、コードを見つけるために必要なパスをコンパイラに指定すれば、問題ありません。

于 2012-08-03T21:20:43.513 に答える
0

フルパスを使用できます

#include "/Users/xyz/Documents/function.h"

または相対パス (通常はこちらの方が望ましい)

#include "../Documents/function.h"

.obj最終的な実行可能ファイルをリンクするときも、ファイルへの絶対パスまたは相対パスを指定することを忘れないでください;)

于 2012-08-03T21:21:38.307 に答える