2012-04-30 9 views
11

¿Por qué el compilador Delphi ignora este paréntesis faltante?El compilador ignora el paréntesis faltante del comando Salir

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

me encontré con algunos de mi código con este aspecto y el primer pensamiento que Delphi hace caso omiso de mi unidad - pero simplemente hace caso omiso de este tipo de error de sintaxis. Así que ahora, por supuesto, quiero saber por qué.

+5

Esto parece un error en el compilador para mí. –

+0

Lo mismo ocurre con la actualización XE2 4. Error Insight lo marca. –

+0

Supongo que sería que como la función no contiene nada más, ignora la función en sí misma. Intenta agregar un código antes de la salida. – CyprUS

Respuesta

1

Supongo que Exit se considera un token en sí mismo, y como tal todo lo definido dentro del mismo ámbito después de Exit es simplemente ignorado por el compilador (ya que no puede ejecutar esas instrucciones de todos modos).

+0

Agregar instrucciones después de 'Exit (True;' hace que el compilador se queje nuevamente con "E2066 Operador faltante o punto y coma" (Delphi XE). –

+0

Supongo que es porque el punto y coma solicita al compilador que intente compilar la siguiente instrucción. – LaKraven

+0

Esencialmente estoy diciendo que 'Exit' es un token" absoluto ", lo que hace que el compilador ignore los caracteres posteriores en la misma instrucción hasta la siguiente aparición del punto y coma, que lo separa de las instrucciones anteriores. Es un capricho, seguro ... ¡y un hallazgo interesante! – LaKraven

0

Quizás el compilador piense que 1. Hay una salida sola, o 2. Hay una salida con un paréntesis(). Si no encuentra el n. ° 2 va al n. ° 1.

Cuestiones relacionadas