Экспорт подпрограмм

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

По умолчанию экспортное имя подпрограммы совпадает с ее идентификатором в исходном тексте библиотеки (с учетом заглавных и строчных букв). Например, если секция exports имеет следующий вид,

Exports

BubleSort;

то экспортное имя процедуры будет BubleSort. При желании экспортное имя можно сделать отличным от программного имени, дополнив описание директивой name, например:

Exports

BubleSort name 'BubleSortIntegers';

В итоге, экспортное имя процедуры BubleSort будет BubleSortIntegers.

Экспортные имена подпрограмм должны быть уникальны в пределах библиотеки, поэтому их нужно всегда указывать явно для перегруженных (overload) процедур и функций. Например, если имеются две перегруженные процедуры с общим именем QuickSort,

procedure QuickSort(var Arr: array of Integer); overload; // для целых чисел

procedure QuickSort(var Arr: array of Real); overload; // для вещественных

то при экспорте этим двум процедурам необходимо явно указать отличные друг от друга экспортные имена:

Exports

QuickSort(var Arr: array of Integer) name 'QuickSortIntegers';

QuickSort(var Arr: array of Real) name 'QuickSortReals';

Полные списки параметров нужны для того, чтобы компилятор мог разобраться, о какой процедуре идет речь в каждом случае.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: