编译器如何处理过程/函数中的过程/函数

时间:2013-03-20 20:19:27

标签: delphi

某些过程或函数写在另一个过程中,如:

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

在这个例子中,在Foo函数中声明的所有变量都可以在Bar内部进行访问。 如何分享上下文?

1 个答案:

答案 0 :(得分:4)

调用范围将其帧指针作为隐藏参数传递给内部过程。然后,内部过程可以使用此隐藏指针访问外部作用域中的变量。