1

一部のプロシージャまたは関数は、次のように別のものの中に記述されています。

function Foo: Integer;
var A: String;
    procedure Bar;
    begin
      A := '2';
      //code
    end; 
begin
  A:= '1';
  Bar;
  Result := StrToInt(A);
end;

この例では、Foo 関数で宣言されたすべての変数は、Bar 内でアクセスできます。コンテキストはどのように共有されますか?

4

1 に答える 1

4

呼び出しスコープは、そのフレーム ポインターを隠しパラメーターとして内部プロシージャーに渡します。内部プロシージャは、この隠しポインタを使用して外部スコープの変数にアクセスできます。

于 2013-03-20T20:23:09.097 に答える