我坐在调试一些代码,我偶然发现这一行SysUtils.pas:的“本地”指令德尔福
procedure ConvertError(ResString: PResStringRec); local;
是什么地方的关键字做什么呢?看起来ConvertError函数没有在文件的接口部分声明,这只是一个澄清,该函数确实是本地的,或者除了那个使用这个指令是否有实际好处?
我坐在调试一些代码,我偶然发现这一行SysUtils.pas:的“本地”指令德尔福
procedure ConvertError(ResString: PResStringRec); local;
是什么地方的关键字做什么呢?看起来ConvertError函数没有在文件的接口部分声明,这只是一个澄清,该函数确实是本地的,或者除了那个使用这个指令是否有实际好处?
它可以追溯到Linux编译器Kylix。这是我可以在我的Delphi 6语言指南看到,第9-4页:
该指令当地,这标志着程序不可用用于出口,是特定于平台的,并在Windows编程中没有任何影响。
在Linux上,本地指令为编译到库中但未导出的例程提供轻微的性能优化。该指令可以指定为独立的程序和函数,但不适用于方法。例如,用本地声明的例程。
function Contraband(I: Integer): Integer; local;
- 不刷新EBX寄存器,因此
- 不能从库中导出的。
- 不能在接口部分声明单位。
- 不能将其地址作为或分配给程序型变量。
- 如果它是纯粹的汇编程序,则不能从另一个单元调用,除非调用者设置了EBX。
看来,该指令确保接口中没有声明(否则会导致编译时错误)。有趣... –
您是否尝试阅读关键字的文档? – wRAR
@wRAR我碰到了f1,但内置的文档找不到它。然后我检查了谷歌,并没有提出什么,在这里我们;) – kling