Împărțirea programului în fișiere
Dacă programul conține mult cod, atunci ar fi mai optim să separăm anumite părți ale codului în fișiere diferite. De exemplu, unele funcții pot fi păstrate într-un fișier sursă, iar alte funcții – într-un alt fișier.
De exemplu, definim fișierul sum.cpp, care va avea următorul cod:
int sum(int a, int b)
{
return a + b;
}
Aceasta este funcția de calcul al sumei a două numere.
Adăugăm încă un fișier – sum.h, care va conține declarația funcției sum:
int sum(int, int);
Și de asemenea definim fișierul principal, pe care îl vom numi app.cpp:
#include <iostream>
#include "sum.h" // conectăm fișierul sum.h
int main()
{
int result { sum(5, 4)};
std::cout << "result = " << result << std::endl; // result = 9
}
Funcția main apelează funcția sum pentru a calcula suma numerelor. Însă înainte de a folosi funcția, aceasta trebuie să fie definită sau cel puțin să fie cunoscut antetul ei. În temele anterioare declarația funcției era adăugată direct în fișierul principal și unic al programului.
Însă dacă funcțiile sunt definite în fișiere separate, atunci este mai optim să plasăm declarațiile funcțiilor în fișiere speciale de antet și apoi să conectăm aceste fișiere. De aceea, la început, cu ajutorul directivei #include este conectat fișierul sum.h, care conține declarația sau antetul funcției:
#include "sum.h"
Fișierul sum.h se mai numește și fișier de antet (header file), deoarece conține declarația, antetul funcției. Și în acest caz se presupune că toate fișierele sunt plasate în același director.
Fișierele de antet în limbajul de programare C++
Am fi putut să nu conectăm fișierul sum.h și, în general, să nu-l creăm, iar declarația funcției să fie plasată direct în fișierul app.cpp. Dar în cazul modificării funcției, poate fi necesară modificarea și a declarației acesteia. Și dacă funcția sum este folosită în mai multe fișiere sursă, atunci în fiecare dintre aceste fișiere va trebui modificată declarația. În acest caz, este suficient să modificăm declarația funcției într-un singur fișier – sum.h.
La compilare prin g++, este necesar să transmitem toate fișierele separate prin spațiu compilatorului:
g++ app.cpp sum.cpp -o app
Același lucru este valabil și pentru compilarea prin Clang:
clang++ app.cpp sum.cpp -o app.exe
La ieșire va fi generat un singur fișier app.
La lucrul în Visual Studio, fișierele de antet sunt de obicei plasate în dosarul "Headers":

Iar la compilare, toate fișierele sunt compilate automat într-unul singur.