我的一位同事撞上了一個突然「變價」的常數;
橫空出世,它被重新聲明:爲什麼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