【发布时间】:2019-03-01 15:09:33
【问题描述】:
我在 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 有很多奇怪的语法“特性”。我将其归因于错误,耸耸肩,然后继续前进。 (例如,函数装饰关键字(如 virtual、abstract、overload、inline、stdcall、static 等)的允许顺序以及问题,它们是否需要、容忍或不喜欢它们之间的分号)
-
编译器错误.....