Компиляция и связывание нескольких файлов в C ++

Один из моих друзей-"непрограммистов" недавно решил создать программу на C ++ для решения сложной механической задачи.

Он написал каждую функцию в отдельном файле .cpp, а затем включил их все в основной исходный файл, примерно так:

main.cpp:

#include "function1.cpp"
#include "function2.cpp"
...
int main() 
{
...

}

Затем он скомпилировал код с одним gcc line:

g++ main.cpp    // took about 2 seconds 

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

funcs.h:

extern void function1(..);
extern void function2(..);
...

main.cpp:

...
#include "funcs.h"
...

& компилируется с помощью:

g++ -c function1.cpp
g++ -c function2.cpp
...
g++ -c main.cpp
g++ -o final main.o function1.o function2.o ...

Думаю, что эта схема лучше (конечно, с make-файлом). Какие причины я могу назвать своему другу, чтобы убедить его в этом?

20
задан 29 September 2010 в 09:40
поделиться