我正在浏览Delphi 2009语言指南。发现一些奇怪的事情。在指令列表(不是编译器指令)中,我找到了 pointermath 。
RAD-Studio
Reference
Delphi Reference
Delphi Language Guide
Fundamental Syntactic Elements
Fundamental Syntactic Elements
[Directives]
我知道这是一个编译器指令{$ POINTERMATH ON | OFF}但我不知道如何使用这个人。帮助中没有其他信息,所以我尝试了一些但没有成功。
procedure Name; pointermath; // gave an error
所以有几种可能性:
我认为这是一个错误,(还有更多 seled 必须密封)。
有人对此指令有所了解吗?
答案 0 :(得分:2)
Pointermath让你做这样的事情:
{$POINTERMATH ON}
procedure Test;
var
temp: PWord;
begin
temp := anAddress;
temp := temp + 16;
// temp now points to anAddress+$20 (2*16)
end;
没有指针,你得到: [DCC错误] unit.pas(135):E2015运算符不适用于此操作数类型
实质上,这意味着您不再需要对Integer的指针进行类型转换,以便将它们增加一个数值。
答案 1 :(得分:2)
除非Barry Kelly证明我们错了(他是对此的权威),否则我会投票支持文档错误:它适用于'编译器指令'一章。
答案 2 :(得分:1)
Codegear已经确认这是一个错误。
答案 3 :(得分:0)
我认为这意味着它允许你像指针数学一样做C。在Delphi 2009之前,你只能对类型指针进行有限的指针数学运算。