📄 delphi object pascal 編譯器的編譯指令之一.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 + -