⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 delphi object pascal 編譯器的編譯指令之一.txt

📁 自己对DELPHI学习的一点体会
💻 TXT
字号:
Delphi Object Pascal 編譯器的編譯指令之一({$A+} 欄位對齊)(本人會連續刊登) (2001年3月16日) 

网友更新  分类:杂类   作者:erp2  推荐:erp2   阅读次数:222  
(http://www.codesky.net)  

--------------------------------------------------------------------------------
{$A+} 欄位對齊
在{$A+}(預設值)的情形下, 如果沒有使用 packed 修飾詞宣告的 record 型態, 其欄位會以CPU可以有效存取的方式向 1. 2. 4 等邊界對齊, 以獲取最佳的存取速度。以下列的程式示例來說:
{$A+}
type
MyRecord = record
ByteField: byte;
IntegerField: integer;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(IntToStr(SizeOf(MyRecord)));
end;
ShowMessage在{$A+}時顯示的結果是:「8」; 倘若是{$A-}, 那所得的結果是「5」, 按理說, Byte應該只要一個byte就足夠了, 但是考慮到硬體的執行特性, 經過對齊後的record會有比較好的執行速度。
有關這個Compiler Directive要注意的事項是: 不管{$A}的開關是ON或OFF, 使用packed修飾過的記錄宣告, 是一定不會對齊的. 例如: 
MyRecord = packed record // 不會對齊的記錄宣告方式
 
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -