Руководство по языку B.Pascal 7

         

Описания external


Описания external позволяют связывать отдельно скомпилиро- ванные процедуры и функции, написанные на языке ассемблера. Опи- сания external позволяют также импортировать процедуры и функции из DLL.

Примечание: Более детальное описания компоновки с программой на языке ассемблера содержится в Главе 25.

директива external ¦ ----------- L->¦ external +T-----------------------------------------------> L-----------¦ -------------------- ^ L>¦строковая константа+T------------------------ L--------------------¦ ------- ----------^ +>¦ name +->¦строковая++ ¦ L------- ¦константদ ¦ L----------¦ ¦ -------- ----------¦ L>¦ index +>¦ целая +- L-------- ¦константа¦ L----------

Директива external, состоящая только из зарезервированного слова external, используется в сочетании с директивами {$L имя_файла} для компоновки с процедурами и функциями, реализован- ными в файлах .OBJ.

Приведем следующие примеры описаний внешних процедур:

procedure MoveWord(var source,dest; count: longint); external;

procedure MoveLong(var source,dest; count: longint); external;

procedure FillWord(var dest,data: integer; count: longint); external;

procedure FillLong(var dest,data: integer; count: longint); external;

{$L BLOCK.OBJ}

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

Директивы external, специфицирующие имя динамически компону- емой библиотеки (и, возможно, импортируемое имя или порядковый номер импорта), используются для импорта процедур и функций из динамически компонуемых библиотек. Например, следующая директива external импортирует из DLL с именем KERNEL (ядро Windows) функ- цию с именем GlobalAlloc:

function GlobalAlloc(Flags: Word; Bytes: Longint): THandle; far; external 'KERNEL' index 15;

В импортируемой процедуре или функции директива external за- нимает место описания и операторной части. В импортируемых проце- дурах или функциях должен использоваться дальний тип вызова, за- даваемый с помощью директивы far в описании процедуры или дирек- тивы компилятора {$F+}. В остальном импортируемые процедуры и функции аналогичны обычным процедурам и функциям.

Примечание: Подробнее об импорте функций из DLL расс- казывается в Главе 11.



Содержание раздела