Урок №20. Многофайловые программы



Книга Урок №20. Многофайловые программы

При увеличении размера программ следует разделять их на несколько файлов для удобства и повышения функциональности. Одним из плюсов использования IDE является удобство работы с большим количеством файлов. Мы уже знакомы с процессом создания и компиляции однофайловых проектов, поэтому добавление новых файлов не представляет сложностей.

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

Для добавления нового элемента в Visual Studio следует выполнить следующие действия: откройте "Обозреватель решений", найдите ваш проект, нажмите правой кнопкой мыши на его имени, выберите пункт "Добавить" и затем "Создать элемент...".

Пожалуйста, выберите необходимый тип файла в появившемся диалоговом окне, укажите его название и местоположение, после чего нажмите кнопку "Добавить":

Вы также имеете возможность прикреплять файлы к вашему проекту, перейдя в раздел "Проект" и выбрав опцию "Добавить новый элемент...".

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

Для создания нового файла в Code::Blocks следует выбрать пункт меню "File" > "New" > "File...".

После этого выберите "исходный код C/C++" и нажмите "Перейти":

После этого может появиться кнопка "Далее" (но это не обязательно):

После этого "C++" и снова "Next" :

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

Выполнено! Файл успешно загружен.

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

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

Компилируйте файлы main.cpp и add.cpp с помощью g++ и сохраните результат в исполняемом файле под названием main

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

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

Давайте изучим следующий код, который включает в себя два файла.

Файл add.cpp:

int add ( int x , int y )

{

return x + y ;

}

Файл main.cpp:

#include

int main ( )

{

std :: cout << "The sum of 3 and 4 is: " << add ( 3 , 4 ) << std :: endl ;

return 0 ;

}

Рекомендуется попытаться выполнить данный код. Он не будет скомпилирован, и вы столкнетесь с такой ошибкой:

добавить: не удалось найти идентификатор

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

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

#include

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

int main ( )

{

std :: cout << "The sum of 3 and 4 is: " << add ( 3 , 4 ) << std :: endl ;

return 0 ;

}

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

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

Существует множество ситуаций, которые могут не задаться, особенно, если вы делаете что-то впервые. Главное — сохранять спокойствие:

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

Второй шаг: Если вы столкнулись с данной проблемой от компилятора:

Ошибка: в функции _main обнаружен неразрешенный внешний символ "int __cdecl add(int,int)" (?add@@YAHHH@Z)

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

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

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

в) Есть вероятность того, что добавленный файл не включен в процесс компиляции или линковки. Нажмите правой кнопкой мыши на названии вашего добавленного файла и выберите "Свойства":

Проверьте, что поле "Исключен из сборки" не заполнено или выбрано значение "Нет":

Третье правило: В main.cpp не рекомендуется добавлять следующий код:

#include "add.cpp"

Если вставить эту строку, компилятор будет включать все содержимое файла add.cpp непосредственно в main.cpp, вместо того чтобы рассматривать их как отдельные файлы.

Тест

Для разделения данной программы на два файла (main.cpp и input.cpp) необходимо поместить функцию main() в main.cpp, а функцию getInteger() в input.cpp.

Не забывайте, что перед использованием функции getInteger() необходимо сначала объявить ее в файле main.cpp.

#include

int getInteger ( )

{

std :: cout << "Enter an integer: " ;

int x ;

std :: cin >> x ;

return x ;

}

int main ( )

{

int x = getInteger ( ) ;

int y = getInteger ( ) ;

std :: cout << x << " + " << y << " is " << x + y << '
' ;

return 0 ;

}

193   0  

Comments

    Ничего не найдено.