Pascal - 在定义之前使用过程

时间:2013-12-25 20:30:58

标签: function pascal procedure

我有一段代码,非常简化,看起来像这样

program helloworld;
a:integer;

procedure alpha;
begin
writeln('This is procedure alpha');
beta;
end;

procedure beta;
begin
writeln('This is procedure beta');
alpha;
end;

begin
readln(a);
if a=1 then alpha;
if a=2 then beta;
end.

这当然是一个例子,但你得到了我想说的话。我知道错误在哪里 - 我试图使用一个尚未定义的程序 - 但我想弄清楚的是如何使pascal"忽略"直到它真的成为一个问题(这里它不是问题,因为程序beta后来定义)?

TLDR;如何使用尚未定义的程序?

1 个答案:

答案 0 :(得分:3)

Pascal只知道已定义的内容,因此在任何程序之前需要forward声明:

procedure beta; forward;

procedure alpha;
begin
    writeln('This is procedure alpha');
    beta;
end;

procedure beta;
begin
    writeln('This is procedure beta');
    alpha;
end;

但是,请注意,您的代码将创建一个无限循环的调用,它将生成堆栈溢出(非常恰当)或无限循环,具体取决于您的编译器。