为什么我可以在不分开Delphi中的参数的情况下调用函数



i在Delphi 5中创建了一些功能,而我偶然地试图在没有逗号分开参数列表的情况下进行编译,奇怪的是,它完全正常。

我尝试将问题隔离如下:

program Project1;
{$APPTYPE CONSOLE}
procedure foo(i : integer; s : string; di : integer = -1);
begin
  WriteLn(s);
end;
var
  str: string;
  int: integer;
begin
  str := 'aaa';
  int := 1000;
  foo(int str int);
  ReadLn;
end.

它编译了,没有例外,对伙伴们完全触及了功能。

我注意到的是,如果我最后删除默认参数,它开始抛出编译错误 Not enough actual parameters

为什么德尔菲有这种行为?这是某种编译器错误还是怪异的机械师?

这似乎是一个编译器错误,至少从D2010开始,并且可能更早。Delphi 5在撰写本文时已有20年的历史,并且仅在D4中引入了默认参数,因此有理由认为此后有一些早期问题已得到纠正。

相关内容

最新更新