web-dev-qa-db-ja.com

C ++プログラムで複数の.cppファイルを使用していますか?

私は最近、C++のJavaから移動しましたが、アプリケーションを作成するとき、メイン関数で別の関数を呼び出すためにメイン関数でコードのすべてを書くことに興味がありません。他の関数は別の.cppファイルにあります。

理解できない場合は、もっと詳しく説明します。
1つのファイル:_main.cpp_があり、その中にメイン関数があります。

2番目のファイルがあります:_second.cpp_内部にsecond()という関数があります。この関数をメイン関数からsecond()と呼びます。

助けがありますか?

48
Rakso

「ヘッダー」と呼ばれるツールを使用する必要があります。ヘッダーで、使用する関数を宣言します。次に、それを両方のファイルに含めます。ヘッダーは、#includeディレクティブを使用して含まれる別個のファイルです。その後、他の関数を呼び出すことができます。

other.h

void MyFunc();

main.cpp

#include "other.h"
int main() {
    MyFunc();
}

other.cpp

#include "other.h"
#include <iostream>
void MyFunc() {
    std::cout << "Ohai from another .cpp file!";
    std::cin.get();
}
70
Puppy

関数の宣言を含むヘッダーファイル(.h)、次に定義を含む対応する.cppファイルが必要です。次に、必要な場所にヘッダーファイルを含めます。定義を含む.cppファイルには(対応する)ヘッダーファイルも含める必要があることに注意してください。

// main.cpp
#include "second.h"
int main () {
    secondFunction();
}

// second.h
void secondFunction();

// second.cpp
#include "second.h"
void secondFunction() {
   // do stuff
}
18
Creat

C/C++には、ヘッダーファイル(* .H)があります。そこで、関数/クラスを宣言します。したがって、たとえば_#include "second.h"_を_main.cpp_ファイルに追加する必要があります。

_second.h_では、このように宣言するだけですvoid yourFunction(); _second.cpp_では、次のように実装します

_void yourFunction() { 
   doSomethng(); 
}
_

_#include "second.h"_の先頭でも_second.cpp_を忘れないでください

お役に立てれば:)

6
m_pGladiator

second()関数の前方宣言を、main()の上にある_main.cpp_に配置するだけです。 _second.cpp_に複数の関数があり、そのすべてをmain()に含める場合は、_second.cpp_の関数のすべての前方宣言をヘッダーファイルに入れ、_#include_ _main.cpp_にある。

このような-

Second.h:

_void second();
int third();
double fourth();
_

main.cpp:

_#include <iostream>
#include "second.h"
int main()
{
    //.....
    return 0;
}
_

second.cpp:

_void second()
{
    //...
}

int third()
{ 
    //...
    return foo;
}

double fourth()
{ 
    //...
    return f;
}
_

注:_#include "second.h"_を_second.cpp_にする必要はありません。コンパイラに必要なのは前方宣言だけで、リンカは他のファイルでそれらの宣言の定義を検索する仕事をします。

0