Разделить код на несколько файлов C++

Содержание
Введение
Вынос в соседний файл
.h : Заголовочные файлы
Компиляция и запуск
Пример с перегрузкой функции
Другие статьи о С++

Введение

Только маленькие программы удобно хранить в одном файле. Разбиение кода на несколько файлов может упростить разработку и ускорить компиляцию.

Вынос части кода в соседний .cpp файл

Файл можно разделить на несколько частей и положить эти .cpp файлы в одну директорию.

Назовём главный файл, где Вы вызываете main() Main.cpp

Создайте файл Functions.cpp и перенесите туда все функции.

В Main.cpp укажите названия функций, которые вы перенесли и аргументы, которые они принимают.

Main.cpp

#include <iostream> using namespace std; double add(double x, double y); int main() { double b = add(1.3, 4.5); cout << "1.3 + 4.5 is " << b; return 0; }

Создайте новый файл Functions.cpp который будет содержат только функции:

double add(double x, double y) { return x + y; }

Header Files

Чтобы не перечислять все функции которые вы хотите использовать в главном файле можно упомянуть их в специальном Header файле с расширением .h

Назовём его Functions.h и подключим к главному с помощью директивы #include

Main.cpp

#include <iostream> #include "Functions.h" int main() { double b = add(1.3, 4.5); cout << "1.3 + 4.5 is " << b << "\n"; return 0; }

Файл Functions.h

#pragma once double add(double x, double y);

#pragma once

или

#ifndef
#define

нужны, чтобы один и тот же .h файл не подгружался многократно. После первого подключения все остальные попытки буду проигнорированы.

Файл Functions.cpp остаётся без изменений.

Изображение баннера

Компиляция и запуск

Чтобы скомпилировать проект нужно перечислить все нужные .cpp файлы.

В данном примере это

g++ main.cpp Functions.cpp -o main
./main

1.3 + 4.5 is 5.8

Пример с перегрузкой

Добавим функций разного типа, чтобы убедиться в работоспособности кода

Если вы разди эксперимента хотите перегрузить функцию add() ничего в описанном выше подходе менять не нужно.

Просто добавьте перегруженную функцию в Functions.cpp и Functions.h а потом вызовите из main.cpp

Main.cpp

#include <iostream> #include "Functions.h" int main() { double b = add(1.3, 4.5); cout << "1.3 + 4.5 is " << b << "\n"; double c = add(1.0,2.0,3.0); cout << "1 + 2 + 3 is " << c << "\n"; // 6 return 0; }

Functions.cpp

bool test(bool x) { return x; } bool test(double x) { return x > 0; } double add(double x, double y) { return x + y; } double add(double a, double b, double c) { return a + b + c; }

Functions.h

#pragma once double add(double x, double y); double add(double a, double b, double c); bool test(bool x); bool test(double x); void test(int y);

g++ main.cpp Functions.cpp -o main
./main

1.3 + 4.5 is 5.8
1 + 2 + 3 is 6

Если файлов становится много - бывает полезно создать Makefile

Подробнее читайте в статьях

Похожие статьи
Development на C++
Перегрузка функций
-c: Компиляция
Вектор
Указатели
Классы
SFML
Тетрис на C++ с библиотекой SFML2
SDL
Массив Структур
Как узнать тип переменной C++
Решение задач на C++
Как создать пустую строку в C++
Запросы к REST API на C++
Ошибки C++
Make

Поиск по сайту

Подпишитесь на Telegram канал @aofeed чтобы следить за выходом новых статей и обновлением старых

Перейти на канал

@aofeed

Задать вопрос в Телеграм-группе

@aofeedchat

Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на info@urn.su если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящую по тематике.
3. Реклама на моём сайте имеет максимальный уровень цензуры. Если Вы увидели рекламный блок недопустимый для просмотра детьми школьного возраста, вызывающий шок или вводящий в заблуждение - пожалуйста свяжитесь с нами по электронной почте
4. Нашли на сайте ошибку, неточности, баг и т.д. ... .......
5. Статьи можно расшарить в соцсетях, нажав на иконку сети: