Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие_2_изд_испр.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
2.27 Mб
Скачать

14.3. Проект программы

В современных средах разработки программ существуют специальные средства, позволяющие управлять процессом трансляции отдельных модулей, собирать (компоновать) полученные после трансляции объектные файлы (расширение .obj) в единый загрузочный модуль (расширение .exe). Загрузочный модуль затем размещается в память компьютера (загружается) и выполняется. Эти средства создают и корректируют файл описания проекта программы. Проект – это набор файлов, используемых при построении приложения. Средства работы с проектами выполняют также и некоторые дополнительные функции, облегчающие разработку.

14.3.1. Использование директивы препроцессора #include

В языке C откомпилировать исходные файлы и собрать из полученных объектных модулей единый загрузочный модуль можно, не используя этих специальных средств. Для этого в текст одного из исходных модулей включаются с помощью директивы #include тексты всех остальных модулей и полученный единый исходный модуль транслируется и компонуется.

Пример.

/* file3.c */

#include "ext.h"

#include "file1.c"

#include "file2.c"

Т

Е

К

С

Т

Замечание. Такой прием используется только для небольших программ в 2-3 исходных модуля, т.к. любая модификация требует перетрансляции всей программы. В этом случае исходные тексты удобно располагать в одной директории (папке). В общем случае, такой прием не рекомендуется.

14.3.2. Средства управления проектом

Эти средства включены в описание сред разработки Borland C++ 3.1 и Visual Basic 6.0 и приведены в Приложениях 1 и 2.

14.4. Инициализация данных

Под инициализацией понимают задание значений объектам программы в момент их определения. В языке Basic все числовые объекты и строки постоянной длины инициализируются нулями, строки произвольной длины – "пустой" строкой (""). Средств инициализации другими значениями не предусмотрено, поэтому речь далее пойдет только о языке C.

Любое определение может задать начальное значение определяемого объекта с помощью инициаторов.

Инициатор: =<выражение>|{<список_выражений>}

Все выражения для static и extern объектов – постоянные, для auto и registerпроизвольные. Если объект типа static или extern не инициируется, то для числовых типов он получает значение нуль, для символьных массивов "" (пустая строка), для указателей – значение символической константы NULL. Другие объекты получают в отведенной области памяти "мусор" (неопределенные значения).

Если объект представляет собой совокупность (структура, массив, объединение), то инициатор имеет вид: {<выражение>[<, выражение>]...}. Выражения – это инициаторы для элементов, записанные в порядке их хранения в памяти. Если совокупность содержит составные подобъекты, то правило рекурсивно распространяется и на них.

Если инициаторов меньше, чем элементов, то оставшиеся инициируются по общим правилам, если больше, то регистрируется ошибка. Для инициализации символьных массивов можно использовать литералы типа string.

Все объекты инициализируются только в момент выделения памяти, по-этому объекты класса памяти static или extern при изменении начальное значение не восстанавливают, а объекты класса памяти auto или register инициализируются каждый раз при входе в функцию или блок, где они определены.

Примеры.

1. Скаляры.

#define SIZE 3

static int dlina=SIZE+1;

int k=n+1;