我坐在調試一些代碼,我偶然發現這一行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