2012-04-30 36 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。