我的一位同事撞上了一个突然“变价”的常数;
横空出世,它被重新声明:为什么Delphi编译器不会警告重定义的常量?
unit Unit1;
interface
const
MyConstant = 1;
implementation
end.
-
unit Unit2;
interface
const
MyConstant = 2;
implementation
end.
-
Uses Unit1, Unit2;
// Uses Unit2, Unit1;
procedure TFrmRedefineConstant.FormShow(Sender: TObject);
begin
ShowMessage('MyConstant: ' + IntToStr(MyConstant));
end;
这说明2
。如果您在Uses语句中交换单位订单,它将显示1
。
很好,但是为什么Delphi编译器不会警告重复的常量名称(这会很有帮助)?
有什么我可以做的警告(看起来不是这样)。
它可能但它没有,我想你应该在EMB论坛上询问为什么这不会引发红旗......,这同样适用于函数,类等。 – ComputerSaysNo
为什么?因为它也可以是一个很好的资产,能够在不同的单元中声明一个具有相同名称的符号/类型,并且比使用最初声明符号/类型的单元更接近使用单元的范围。例如,插入器类将不可能没有它。 –
@MarjanVenema真的,但是,有些人宁愿被告知这种情况,而不是寻找错误... – ComputerSaysNo