我有一段代码,非常简化,看起来像这样
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;如何使用尚未定义的程序?
答案 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;
但是,请注意,您的代码将创建一个无限循环的调用,它将生成堆栈溢出(非常恰当)或无限循环,具体取决于您的编译器。