среда, 30 мая 2012 г.

Трансляция и компоновка


Для большинства программ целесообразно действовать по старой римской пословице “Разделяй и властвуй". Задача раскладывается на подзадачи, которые формируются в виде модулей. В результате вся программа становиться не только более надёжной и обозримой , но и появляется возможность одновременной работы над программой нескольких человек. При таком подходе возникает одна довольно серьёзная трудность: как обеспечить, чтобы узлы такого дерева всегда имели актуальное состояние.
Итак, несколько человек работают над модулями, являющимися узлами другого модуля. Во избежание всяких накладок нужно будет вести учет времени формирования каждого узла (т. е. модуля). Ни один узел не может иметь более позднюю датувозникновения, чем лежащий выше узел. В Турбо Паскале пункт меню Compile Make предоставляет механизм, который автоматически может отслеживать эти временные связи и заново компилировать соответствующие модули. Функция Compile/Make(для версии 5.0) имеет следующий результат:
         Если с помощью Compile/Primary/ File создан некий “головной файл”, он используется для компоновки, в противном случае берётся записанный  в редакторе исходный текст;
         Если интерфейсная часть модуля изменена, заново компилируются все модули, которые её используют.
         Если модуль содержит в себе директиву включения, а файл с указанным именем имеет более позднюю дату создания, чем сам модуль, он так же компилируется заново.
Если в некоторый модуль с помощью директивы (*L*) включается некоторый объектный файл , который создан позже модуля, модуль компилируется заново. Естественным условием применения функции Compileявляется наличие исходного текста файла. Для стандартных модулей в TPL сравнение даты и времени создания файлов не предусмотрены.
Тот, кто хочет быть уверен в абсолютной правильности результата, может воспользоваться функцией Compile /built. При этом даты и время создания связанных между собой модулей не сравниваются, а просто заново компилируются все используемые программой модули. 

Комментариев нет:

Отправить комментарий