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