我正在调试一些代码,在 SysUtils.pas 中偶然发现了这一行:
procedure ConvertError(ResString: PResStringRec); local;
local 关键字到底有什么作用?似乎 ConvertError 函数没有在文件的接口部分中声明,这只是澄清该函数确实是本地函数,还是除此之外使用此指令还有实际好处?
它可以追溯到 Linux 编译器 Kylix。以下是我在 Delphi 6 语言指南第 9-4 页中看到的内容:
该指令local,它将例程标记为不可导出,是特定于平台的,并且在 Windows 编程中没有影响。
在 Linux 上,local指令为编译到库中但未导出的例程提供了轻微的性能优化。该指令可以为独立过程和函数指定,但不能为方法指定。声明的例程local-例如。
function Contraband(I: Integer): Integer; local;
—不刷新 EBX 寄存器,因此
- 无法从库中导出。
- 不能在界面一个单元的一部分。
- 不能将其地址获取或分配给过程类型变量。
- 如果它是纯汇编程序例程,则不能从另一个单元调用,除非caller设置 EBX。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)