В прошлой статье, рассматривая правило ODR, мы впервые упомянули возможность создания нескольких файлов в исходном коде для написания одной программы.
Это действительно практикует повсеместно. Программы усложняются и программисты для организации кода используют различное количество файлов с ним, которые потом компилируются в одну целостную программу.
В этой статье мы создадим еще один файл с исходным кодом. Я буду пользоваться IDE Visual Studio от Microsoft, а вы, если используете другую IDE, найдите в интернете способ создать в ней дополнительный файл в вашем тестовом проекте.
Преимущество IDE перед простыми редакторами кода в том, что в нее встроена функция создания новых файлов .cpp прямо внутри проекта.
Итак, приступим...
Добавление нового файла в Visual Studio (VS)
Добавление нового файла в Visual Studio ваш тестовый проект (решение), воспользуйтесь окном "Обозреватель решений", расположенным в VS справа.
В обозревателе решений кликните правой кнопкой мышки на вкладку "Исходные файлы", и выберите в открывшемся меню, пункт "Добавить".
Выберите создать элемент и в новом окне выберите строку "Файл С++ (.cpp)".
Ура, новый файл .сpp создан, он находится в исходных файлах вашего проекта и пока пуст.
Сделаем программу с двумя файлами, на примере нашей программы из прошлой статьи. Напомню, что в прошлой статье мы решали задачу, в которой наша программа не хотела компилироваться, потому что компилятор в ней не мог найти где находится функция, которую нужно было вызвать. Функция находилась ниже места ее вызова. Тогда мы пользовались предварительным объявлением и решали поставленную задачу. Было это так:
Теперь мы попробуем написать эту же программу, используя два файла в нашем проекте. Так мы наглядно увидим как все работает.
Рубрика "Ответ на комментарии":
Под прошлой статьей про "Предварительное объявление функций" был вопрос о том: "А зачем оно вообще нужно, если можно сразу описать функцию?"
Спойлер: В примере с двумя файлами мы будем его использовать и там оно как раз таки будет очень даже нужно!
Сейчас мы создадим программу, которая печатает текст на английском: Разность чисел 10 и 15 равна -5.
Для этого сначала перенесем нашу функцию, которая получает аргументы в переменные х, y и потом вычитает их, в новый, созданный недавно, файл.
А теперь, та-дааам. В основном файле менять больше ничего не нужно. Функция difference там предварительно объявлена. Компилятор уже знает о ее существовании, а значит когда она будет вызвана, компоновщик возьмет ее из нашего второго файла и исполнит все инструкции из нее.
Напишите этот код в основной файл, скомпилируйте и запустите эту программу. Вы убедитесь, что все работает. Функция main успешно вызывает функцию difference из другого файла, благодаря ее предварительному объявлению перед main. Весь прочий код, в том числе инструкции из вызываемой функции, выполняется без ошибок.
Надеюсь, теперь вам понятна необходимость использования предварительного объявления в некоторых программах. А так же, ваше знакомство с программами, состоящими из нескольких файлов, прошло успешно.
Спасибо за внимание.
Оставляйте лайки и комментарии. Задавайте вопросы и делитесь мнениями.
Следующий материал будет совсем скоро. Подпишитесь, чтобы не пропустить.