14.8 Внешние (external) функции |
Вверх Предыдущий Следующий |
Модификатор external используется для объявления функции, которая находится во внешнем объектном файле. Это позволяет использовать функцию (или процедуру) в каком-либо коде, содержащую реализацию в объектном файле, на момент компиляции они должны быть связаны. Директива external Она заменяет, блок кода функции (или процедуры). В качестве примера: program CmodDemo; {$LINKLIB c}
Const P : PChar = 'Это интересно!';
Function StrLen(P: PChar): Longint;cdecl; external name 'strlen'; begin WriteLn ('Длина (',p,') : ',StrLen(p)); end.
Если модификатор external сопровождается строковой константой: external 'lname'; Она говорит компилятору, что функция находится в библиотеке lname. Компилятор будет автоматически связать эту библиотеку с программой. Имя функции в библиотеке тоже может быть указано: external 'lname' name 'Fname'; Сообщим компилятору, что функция находится в библиотеке lname, под именем Fname. Компилятор автоматически свяжет эту библиотеку с программой, и использует правильное имя функции. Под Windows и os/2 может быть использована и следующая форма: external 'lname' Index Ind; Сообщаем компилятору, что функция находится в библиотеке lname, с индексом Ind. Компилятор будет автоматически связать эту библиотеку с программой, и использовать правильный индекс функции. Наконец, директиву external можно использовать, для указания имени внешний функции: external name 'Fname'; {$L myfunc.o} Сообщаем компилятору, что функция имеет имя Fname. Правильная библиотека или объектный файл (в данном случае myfunc.o) также должны быть указаны, гарантируя, что функция Fname будет найдена на стадии компоновки. |