-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

したがって、いくつかの可能性があります。

  • まだ実装されていません。
  • ヘルプのバグです。
  • 私はまだそれを使用する適切な場所を見つけていません。

私はそれがバグであると仮定します(封印されなければならないものは他にもあります)。

この指令について何か知っている人はいますか?

4

4 に答える 4

2

Barry Kellyが私たちが間違っていることを証明しない限り(彼はその権威です)、私はドキュメントのバグに投票します。それは「コンパイラ指令」の章のためのものでした。

于 2009-01-20T21:39:24.940 に答える
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 applied to this operand type

要するに、これはポインタを Integer に型キャストして数値をインクリメントする必要がなくなったことを意味します。

于 2009-01-20T12:03:58.173 に答える
1

Codegear はこれがバグであることを確認しています。

于 2009-01-23T08:08:01.347 に答える
0

それが意味することは、C のようなポインター演算を行うことができるということだと思います。Delphi 2009 までは、型付きポインタに対して限られたポインタ演算しか実行できませんでした。

于 2009-01-20T11:51:16.703 に答える