Delphi中的“本地”指令

时间:2013-04-02 12:57:10

标签: delphi

我正坐在调试一些代码,我在SysUtils.pas中偶然发现了这一行:

procedure ConvertError(ResString: PResStringRec); local;

本地关键字的作用是什么?似乎ConvertError函数没有在文件的接口部分声明,这只是说明函数确实是本地的,或者除此之外使用该指令是否有实际好处?

1 个答案:

答案 0 :(得分:16)

它可以追溯到Linux编译器Kylix。以下是我在Delphi 6语言指南中可以看到的内容,第9-4页:

  

指令 local ,它将例程标记为不可导出,是特定于平台的,在Windows编程中无效。

     

在Linux上,本地指令为编译到库中但不导出的例程提供了轻微的性能优化。可以为独立过程和函数指定该指令,但不能为方法指定。用 local 声明的例程 - 例如。

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

- 不刷新EBX寄存器,因此

     
      
  • 无法从库中导出。
  •   
  • 无法在单位的界面部分中声明。
  •   
  • 不能将其地址记录或分配给程序类型变量。
  •   
  • 如果是纯汇编程序,除非调用者设置EBX,否则无法从另一个单元调用。
  •