Подтвердить что ты не робот

"Местная" директива в Delphi

Я сидел вокруг отладки кода, и я наткнулся на эту строку в SysUtils.pas:

procedure ConvertError(ResString: PResStringRec); local;

Что делает локальное ключевое слово? Кажется, что функция ConvertError не объявлена ​​в разделе интерфейса файла, это просто пояснение, что функция действительно является локальной, или есть практическая выгода от использования этой директивы помимо этого?

4b9b3361

Ответ 1

Это датируется компилятором Linux, Kylix. Вот что я вижу в своем руководстве по языку Delphi 6, стр. 9-4:

Директива локальная, которая отмечает, что процедуры, недоступные для экспорта, специфична для платформы и не имеет никакого эффекта в программировании Windows.

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

function Contraband(I: Integer): Integer; local;

- не обновляет регистр EBX и, следовательно,

  • не может быть экспортирован из библиотеки.
  • не может быть объявлен в разделе интерфейса блока.
  • не может присваивать свой адрес или назначаться переменной процедурного типа.
  • если это чистая процедура ассемблера, не может быть вызвана с другого устройства, если вызывающий абонент не устанавливает EBX.