我正在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有这种行为?这是一种编译器错误还是奇怪的机制?