Использование нескольких файлов .cpp в программе C ++? - PullRequest
45 голосов
/ 09 августа 2011

Я недавно перешел с Java на C ++, но теперь, когда я пишу свое приложение, меня не интересует написание всего кода в основной функции, я хочу, чтобы основная функция вызывала другую функцию, но эта другая функция находится в другой. файл cpp.

Позвольте мне объяснить лучше, если вы не поймете:
У меня есть один файл: main.cpp внутри него у меня есть основная функция.

У меня есть второй файл: second.cpp внутри У меня есть функция с именем second() Я хочу вызвать эту функцию с именем second() из моей основной функции ..

Любая помощь?

Ответы [ 4 ]

66 голосов
/ 09 августа 2011

Вы должны использовать инструмент под названием «заголовок».В заголовке вы объявляете функцию, которую хотите использовать.Затем вы включаете его в оба файла.Заголовок - это отдельный файл, включенный с использованием директивы #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();
}
17 голосов
/ 09 августа 2011

У вас должны быть заголовочные файлы (.h), содержащие объявление функции, а затем соответствующий файл .cpp, содержащий определение.Затем вы включаете заголовочный файл везде, где вам это нужно.Обратите внимание, что файл .cpp, содержащий определения, также должен включать (соответствующий) заголовочный файл.

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

// second.h
void secondFunction();

// second.cpp
#include "second.h"
void secondFunction() {
   // do stuff
}
6 голосов
/ 09 августа 2011

В C / C ++ у вас есть заголовочные файлы (* .H).Там вы объявляете свои функции / классы.Так, например, вам нужно будет #include "second.h" к вашему main.cpp файлу.

В second.h вы просто объявляете вот так void yourFunction(); В second.cpp вы реализуете его как

void yourFunction() { 
   doSomethng(); 
}

Не забудьте #include "second.h" также в начале second.cpp

Надеюсь, это поможет:)

0 голосов
/ 31 марта 2019

Вы можете просто поместить предварительную декларацию вашей функции second() в вашем main.cpp выше main(). Если ваш 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. Все, что нужно вашему компилятору, - это предварительные объявления, и ваш компоновщик будет выполнять поиск определений этих объявлений в других файлах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...