Реализация функции в отдельном файле - PullRequest
3 голосов
/ 07 декабря 2010

Каков правильный синтаксис для реализации функции в отдельном файле?Например:

foo.h

int Multiply(const int Number);

foo.cpp

#include "foo.h"

int Multiply(const int Number)
{
    return Number * 2;
}

Я вижу это использовалмного, но когда я пытаюсь это сделать, я получаю ошибку, связанную с отсутствующей функцией main().Я получаю сообщение об ошибке, даже когда пытаюсь скомпилировать рабочий код.

Ответы [ 2 ]

7 голосов
/ 07 декабря 2010

Грубо говоря, вам нужно иметь функцию main () внутри одного из ваших файлов C ++, которые вы компилируете.

Как говорит компилятор, вам просто нужно иметь метод main () внутри вашего foo.cpp, вот так:

#include "foo.h"
#include <iostream>

using namespace std;

int Multiply(const int Number)
{
    return Number * 2;
}

int main() {
    // your "main" program implementation goes here
    cout << Multiply(3) << endl;
    return 0;
}

Или вы можете разделить вашу основную функцию в другой файл, например, так (пропустите блок main () в foo.cpp, если вы собираетесь это сделать):

main.cpp

#include "foo.h"
#include <iostream>

using namespace std;

int main() {
   cout << Multiply(3) << endl;
   return 0;
}

Затем скомпилируйте его как

g++ main.cpp foo.cpp
2 голосов
/ 07 декабря 2010

Каждая программа на C ++ представляет собой набор из одного или нескольких единиц перевода , известных как исходные файлы.

После компиляции этих файлов компоновщик ищет точку входа вашей программы, также известную как функция int main().Так как он не может найти его, он выдает ошибку.

Не забывайте, что сборка программы дает исполняемый файл.Исполняемый файл без точки входа - нонсенс.

...