2012-04-30 8 views
11

Perché il compilatore Delphi ignora questa parentesi mancante?Il compilatore ignora la parentesi mancante del comando Exit

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

ho trovato un po 'del mio codice simile a questo e il primo pensiero che Delphi ignora mia unità - ma semplicemente ignora questo tipo di errore di sintassi. Quindi, ovviamente, voglio sapere perché.

+5

Questo mi sembra un errore nel compilatore. –

+0

Lo stesso nell'aggiornamento XE2 4. Error Insight lo segnala però. –

+0

suppongo che, poiché la funzione non contiene nient'altro, ignora la funzione stessa. Prova ad aggiungere del codice prima dell'uscita. – CyprUS

risposta

1

Sto supponendo che Exit sia considerato un token a sé stante, e come tale qualsiasi cosa definita all'interno dello stesso ambito dopo Exit viene semplicemente ignorata dal compilatore (poiché non è comunque in grado di eseguire tali istruzioni).

+0

Aggiunta di istruzioni dopo l'opzione 'Esci (Vero;' fa nuovamente lamentare il compilatore con "E2066 Operatore mancante o punto e virgola" (Delphi XE). –

+0

Presumo che ciò sia dovuto al fatto che il punto e virgola richiede al compilatore di tentare di compilare l'istruzione successiva. – LaKraven

+0

Sostanzialmente sto dicendo che "Exit" è un token "assoluto", che richiede al compilatore di ignorare qualsiasi carattere successivo sulla stessa istruzione fino alla successiva occorrenza del punto e virgola, che lo separa dall'istruzione (i) procedurale. un cavillo, di sicuro ... e una scoperta interessante! – LaKraven

0

Forse il compilatore sta pensando che sia 1. Esiste un'uscita da sola oppure 2. Esiste un'uscita con una serie di parentesi(). Se non trova # 2 va al # 1.

Problemi correlati