-2

我正在浏览 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必须密封)。

有人知道这个指令吗?

4

4 回答 4

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 Error] unit.pas(135): E2015 Operator not applicable to this operand type

从本质上讲,这意味着您不再需要将指针类型转换为 Integer 以将它们增加一个数值。

于 2009-01-20T12:03:58.173 回答
2

除非Barry Kelly证明我们错了(他是这方面的权威),否则我会投票支持文档错误:它是用于“编译器指令”一章的。

于 2009-01-20T21:39:24.940 回答
1

Codegear 已确认这是一个错误。

于 2009-01-23T08:08:01.347 回答
0

我认为这意味着它允许你像指针数学一样做 C。直到 Delphi 2009,您只能对类型指针进行有限的指针数学运算。

于 2009-01-20T11:51:16.703 回答