我坐在调试一些代码,我在SysUtils.pas中偶然发现了这一行:
procedure ConvertError(ResString: PResStringRec); local;
Run Code Online (Sandbox Code Playgroud)
local关键字到底做了什么?似乎ConvertError函数没有在文件的接口部分声明,这只是澄清该函数确实是本地的,或者使用此指令除此之外是否有实际好处?
Dav*_*nan 16
它可以追溯到Linux编译器Kylix.以下是我在Delphi 6语言指南中可以看到的内容,第9-4页:
指示例程不可导出的指令local是特定于平台的,在Windows编程中没有任何作用.
在Linux上,local指令为编译到库中但不导出的例程提供了轻微的性能优化.可以为独立过程和函数指定该指令,但不能为方法指定.用local声明的例程- 例如.
Run Code Online (Sandbox Code Playgroud)function Contraband(I: Integer): Integer; local;
- 不要刷新EBX寄存器
- 无法从库中导出.
- 不能在单元的接口部分声明.
- 不能将其地址记录或分配给过程类型变量.
- 如果它是纯汇编程序,除非调用者设置EBX,否则不能从另一个单元调用.