Разделение программы на файлы

Последнее обновление: 31.03.2023

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

Например, определим файл sum.cpp, который будет иметь следующий код:

int sum(int a, int b)
{
	return a + b;
}

Это функция вычисления суммы чисел.

Добавим еще один файл - sum.h, который будет содержать объявление функции sum:

int sum(int, int);

И также определим главный файл, который назовем app.cpp:

#include <iostream>
#include "sum.h"	// подключаем файл sum.h

int main()
{
	int result { sum(5, 4)};
	std::cout << "result = " << result << std::endl;	// result = 9
}

Функция main вызывает функцию sum для вычисления суммы чисел. Но перед использованием функции она должна быть определена или по крайней мере должен быть известен ее заголовок. В прошлых темах объявление функции добавлялось непосредственно в главный и единственный файл программы. Однако если функции определены в отдельных файлах, то более оптимально помещать объявления функций в специальные заголовочные файлы и потом подключать эти файлы. Именно поэтому в начале с помощью директивы include подключается файл sum.h, который содержит объявление или заголовок функции.

#include "sum.h"

Файл sum.h еще называется заголовочным файлом (header file), так как содержит объявление, заголовок функции. ПРичем в данном случае предполагается что все файлы располагаются в одном каталоге:

Заголовочные файлы в языке программирования c++

Можно было бы и не подключать файл sum.h и вообще не создавать его, а объявление функции поместить непосредственно в файл app.cpp. Но при изменении функции может потребоваться изменить и ее объявление. И если функция sum используется в нескольких файлах с исходным кодом, то в каждом из этих файлов придется менять ее объявление. В данном же случае достаточно изменить объявление функции в одном файле - sum.h.

При компиляции через g++ необходимо передать все файлы через пробел компилятору:

g++ app.cpp sum.cpp -o app

То же самое верно и для компиляции через Clang::

clang++ app.cpp sum.cpp -o app.exe

На выходе будет сгенерирован единый файл app.

При работе в Visual Studio заголовочные файлы обычны помещаются в каталог "Headers":

header files в языке программирования c++ в Visual Studio

А при компиляции все файлы автоматически компилируются в один.

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850