为什么我可以在没有逗号分隔Delphi中的参数的情况下调用函数?

问题描述 投票:3回答:1

我在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

为什么Delphi有这种行为?这是某种编译器错误还是奇怪的机制呢?

delphi delphi-5
1个回答
5
投票

这似乎是一个编译器错误,至少自D2010以来可能已经修复过。截至本文撰写时,Delphi 5已有二十年的历史,默认参数仅在D4中引入,因此有一些早期问题已被纠正。

© www.soinside.com 2019 - 2024. All rights reserved.