2012-04-30 35 views
11

爲什麼Delphi編譯器忽略這個缺失的括號?編譯器忽略退出命令的缺失括號

function Test: Boolean; 
begin 
    Exit(True; // <-- eek! it compiles... 
end; 

我發現了一些我的代碼看起來像這一點,首先想到的是德爾福忽略了我的單位 - 但它只是忽略了這種類型的語法錯誤。所以現在我當然想知道爲什麼。

+5

這看起來像編譯器中的一個bug。 –

+0

與XE2更新4中的相同。但Error Insight將其標記。 –

+0

我想這應該是因爲該函數沒有其他的東西,它忽略了函數本身。嘗試在退出前添加一些代碼。 – CyprUS

回答

1

我猜Exit被認爲是自己的一個標記,因此在Exit之後的同一範圍內定義的任何東西都被編譯器忽略(因爲它無法執行這些指令)。

+0

添加指令;'使編譯器「E2066缺少操作符或分號」(德爾福XE) –

+0

再次抱怨我想這是因爲分號提示編譯器嘗試編譯下一條指令。 – LaKraven

+0

基本上我說,'Exit'是「絕對」的道理,促使編譯器忽略在同一語句中的任何後續的字符,直到分號的下一個出現時從程序指令(S)分開了。 這是一個怪癖,肯定...和一個有趣的發現! – LaKraven

0

也許編譯器認爲要麼 1.有一個退出本身,或 2.有一個退出帶有一組圓括號()。 如果它沒有找到#2它會到#1。