12. UniPascal в детайли
79
Ако новата версия на един модул е компилирана като съвместима със старата,
но реално е несъвместима, то програмите и модулите, компилирани със старата версия
ще имат непредсказуемо поведение и ще дават непредсказуеми резултати при работа
с новата версия на модула.
Две версии на един модул са реално съвместими, ако  всички нови обекти
(константи, типове, променливи, процедури и функции) са добавени (физически в
изходния текст) в края на описателната част на модула. Ако поне един от обектите е
поставен пред последния от дефинираните в старата версия обекти, то новата версия е
на практика несъвместима със старата. Отново повтаряме, че компилаторът  не
проверява за реалната съвместимост на новата версия на модула със старата и ако
новата несъвместима версия се използва от програми, компилирани със старата, то
тяхното поведение е непредсказуемо.
И още нещо за съвместимостта. Ако новата версия на един модул е реално
съвместима със старата и е компилирана с нов по-голям номер на версия, то програми,
използващи старата версия, ще работят правилно и с новата версия. Програма,
използваща модул, се свързва реално с него едва при стартирането. При това в
програмата е записано името и версията на модула, както и датата и часа, в който този
модул е бил компилиран. Свързването на програма с даден модул, който тя използва,
може да стане, ако има модул под това име, под което програмата го използва и е
изпълнено едно от следните две условия (ако не е изпълнено нито едно от двете условия
се счита, че използваният от програмата модул не е намерен):
*
версията, датата и часа на модула съвпадат с тези записани в програмата.
Така се осигурява идентичност на модула, т.е. че използваният и наличният
модули са един и същ модул;
*
версията на модула е по-голяма от тази, която е записана в програмата, и
моментът (датата и часа, взети заедно) на компилиране на модула е
по-късен, от този, който е записан в програмата. Така се осигурява
идентичност на модула в различните му версии, т.е. че наличният модул е
нова версия на използвания от програмата модул.
Тъй като времето е важно при компилация на модули, необходимо е в
операционната система (от която компилаторът получава това време) да бъдат
установени вярната дата и час, особено ако предстои компилиране не описателна част
на модул.
<<  <  GO  >  >>

Вернуться к началу сайта