Как разбить программу на файлы

Как только программы становятся больше, их следует разбивать на несколько файлов (в целях удобства и улучшения функциональности). Одним из преимуществ использования IDE является легкость в работе с n-ным количеством файлов. Мы уже знаем, как создавать и компилировать однофайловые проекты, добавление новых файлов не составит труда.

Многофайловые проекты в Visual Studio

В Visual Studio щелкните правой кнопкой мыши по имени вашего проекта в «Обозревателе решений» , затем «Добавить» > «Создать элемент. » :

Во всплывающем диалоговом окне выберите тип файла, укажите его имя, расположение, а затем нажмите «Добавить» :

Также вы можете добавлять файлы к вашему проекту через «Проект» > «Добавить новый элемент. » :

Многофайловые проекты в Code::Blocks

В Code::Blocks перейдите в «File» > «New» > «File. » :

Затем выберите «C/C++ source» и нажмите «Go» :

Как разбить файл на части программой 7-Zip

Затем «Next» (этого окна может и не быть):

Затем «C++» и опять «Next» :

Затем укажите имя нового файла (не забудьте расширение .cpp) и его расположение (нажмите на троеточие и выберите путь). Убедитесь, что поставлены все три галочки (они отвечают за конфигурации сборки ). Затем нажмите «Finish» :

Готово! Файл добавлен.

Многофайловые проекты в GCC/G++

В командной строке вам нужно будет создать файл, указать его имя и подключить к компиляции, например:

g++ main.cpp add.cpp -o main

(где main.cpp и add.cpp — это имена файлов с кодом, а main — это имя файла-результата)

Пример многофайловой программы

Рассмотрим следующую программу, которая состоит из двух файлов.

int add ( int x , int y )

return x + y ;

Попробуйте запустить эту программу. Она не скомпилируется, вы получите следующую ошибку:

Читайте также:
Quizlet отзывы о программе

add: идентификатор не найден

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

Тем не менее, в данном случае, мы хотим, чтобы main.cpp знал (и использовал) функцию аdd(), которая находится в add.cpp. Для предоставления доступа main.cpp к функциям add.cpp, нам нужно использовать предварительное объявление :

int add ( int x , int y ) ; // это нужно для того, чтобы main.cpp знал, что функция add() определена в другом месте

Теперь, когда компилятор будет компилировать main.cpp, он будет знать, что такое add(). Попробуйте запустить эту программу еще раз.

Что-то пошло не так!

Есть много вещей, которые могут пойти не так, особенно, если вы это делаете в первый раз. Главное — не паниковать:

Пункт №1: Если вы получили ошибку от компилятора, что функция add() не определена в main(), то, скорее всего, вы забыли записать предварительное объявление функции add() в main.cpp.

Как разделить файл на части? Разбиваем большой файл и собираем его обратно

Пункт №2: Если вы получили следующую ошибку от линкера:

то возможных решений есть несколько:

a) Cкорее всего, add.cpp некорректно добавлен в ваш проект. Если вы используете Visual Studio или Code::Blocks, то вы должны увидеть add.cpp в «Обозревателе решений» в списке файлов вашего проекта или в панели проекта IDE. Если добавленного файла нет, то щелкните правой кнопкой мыши по вашему проекту и добавьте файл, как это показано выше, а затем повторите попытку компиляции вашего проекта.

б) Вполне возможно, что вы добавили add.cpp к другому проекту.

в) Вполне возможно, что добавленный файл не подключен к компиляции/линкингу. Щелкните правой кнопкой мыши по имени вашего добавленного файла и выберите «Свойства» :

Источник: dzen.ru

Как разбить программу на файлы

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

Читайте также:
Программа для просмотра видео или фильмов на компьютер

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

int sum(int a, int b)

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

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

int sum(int, int);

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

#include #include «sum.h» // подключаем файл sum.h int main() < int result < sum(5, 4)>; std::cout #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

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

Источник: metanit.com

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

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

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

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

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

Читайте также:
Программа для калибровки монитора в домашних условиях

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

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

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

#include using namespace std; double add(double x, double y); int main()

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

double add( double x, double y)

Header Files

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

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

#include #include «Functions.h» int main()

Файл Functions.h

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

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

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

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

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

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

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

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

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

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

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

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)

#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

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

Источник: www.andreyolegovich.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru