Questa pagina è stata utile?
I suggerimenti relativi al contenuto di questa pagina sono importanti. Comunicaceli.
Altri suggerimenti?
1500 caratteri rimanenti
Esporta (0) Stampa
Espandi tutto
Il presente articolo è stato tradotto manualmente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. Ulteriori informazioni.
Traduzione
Originale

Direttive per il compilatore (F#)

In questo argomento vengono descritte le direttive per il processore e per il compilatore.

Una direttiva per il preprocessore viene preceduta dal simbolo # e visualizzata da sola su una riga. Viene interpretata dal preprocessore, che viene eseguito prima del compilatore stesso.

Nella tabella seguente sono elencate le direttive per il preprocessore disponibili in F#.

Direttiva

Descrizione

#if simbolo

Supporta la compilazione condizionale. Il codice nella sezione dopo #if viene incluso se simbolo è definito.

#else

Supporta la compilazione condizionale. Contrassegna una sezione di codice da includere se il simbolo utilizzato nella precedente direttiva #if non è definito.

#endif

Supporta la compilazione condizionale. Contrassegna la fine di una sezione condizionale di codice.

# [riga] int, #[riga] intstring, #[riga] intverbatim-string

Indica il nome file e la riga del codice sorgente originale, per l'esecuzione del debug. Questa funzionalità viene fornita per strumenti che generano codice sorgente F#.

Il codice disattivato da una di queste direttive appare in grigio nell'editor del codice di Visual Studio.

Nota Nota

Il comportamento delle direttive di compilazione condizionale non è analogo a quello in altri linguaggi. Non è ad esempio possibile utilizzare espressioni booleane che includono simboli e true e false non hanno alcun significato speciale. I simboli utilizzati nella direttiva #if devono essere definiti dalla riga di comando o nelle impostazioni del progetto. Non vi è alcuna direttiva #define per il preprocessore.

Nel codice seguente viene illustrato l'utilizzo delle direttive #if, #else e #endif. In questo esempio il codice contiene due versioni della definizione di function1. Quando l'elemento VERSION1 viene definito utilizzando l'opzione del compilatore -define, il codice tra la direttiva #if e la direttiva #else viene attivato. In caso contrario, viene attivato il codice tra #else e #endif.

#if VERSION1
let function1 x y =
   printfn "x: %d y: %d" x y
   x + 2 * y
#else 
let function1 x y =
   printfn "x: %d y: %d" x y
   x - 2*y
#endif

let result = function1 10 20

In F# non è presente la direttiva #define per il preprocessore. È necessario utilizzare l'opzione del compilatore o le impostazioni del progetto per definire i simboli utilizzati dalla direttiva #if.

Le direttive di compilazione condizionale possono essere annidate. Il rientro non è significativo per le direttive per il preprocessore.

Durante la compilazione, il compilatore segnala gli errori nel codice F# facendo riferimento ai numeri di riga in cui si verifica ogni errore. Questi numeri di riga iniziano da 1 per la prima riga in un file. Se, tuttavia, si genera codice sorgente F# da un altro strumento, i numeri di riga nel codice generato non sono generalmente di interesse, perché gli errori nel codice F# generato derivano più probabilmente da altro codice sorgente. La direttiva #line consente agli autori di strumenti che generano codice sorgente F# di passare informazioni sui file di origine e sui numeri di riga originali al codice F# generato.

Quando si utilizza la direttiva #line, i nomi di file devono essere racchiusi tra virgolette. A meno che il token letterale (@) non sia presente all'inizio della stringa, è necessario utilizzare caratteri di escape per i caratteri barra rovesciata inserendo due caratteri barra rovesciata anziché uno per poterli utilizzare nel percorso. Di seguito sono illustrati i token di riga validi. In questi esempi si presupponga che il file originale Script1 restituisca un file di codice F# generato automaticamente quando viene eseguito tramite uno strumento e che il codice in corrispondenza di queste direttive sia generato da token alla riga 25 nel file Script1.

# 25
#line 25
#line 25 "C:\\Projects\\MyProject\\MyProject\\Script1"
#line 25 @"C:\Projects\MyProject\MyProject\Script1"
# 25 @"C:\Projects\MyProject\MyProject\Script1"

Questi token indicano che il codice F# generato in questa posizione è derivato da alcuni costrutti in corrispondenza della riga 25 in Script1 o vicino a tale riga.

Le direttive per il compilatore assomigliano a quelle per il preprocessore, perché sono precedute da un simbolo #, ma anziché venire interpretate dal preprocessore, vengono interpretate e utilizzate dal compilatore.

Nella tabella seguente è indicata la direttiva per il compilatore disponibile in F#.

Direttiva

Descrizione

#light ["on"|"off"]

Abilita o disabilita sintassi leggera, per garantire la compatibilità con le altre versioni di ML. Per impostazione predefinita, la sintassi leggera è abilitata. La sintassi dettagliata è sempre abilitata. Pertanto, è possibile utilizzare sia sintassi leggera che sintassi dettagliata. La direttiva #light è di per sé equivalente a #light "on". Se si specifica #light "off", è necessario utilizzare sintassi dettagliata per tutti i costrutti di linguaggio. La sintassi nella documentazione relativa a F# viene visualizzata presupponendo che si utilizzi la sintassi leggera. Per ulteriori informazioni, vedere Sintassi dettagliata (F#).

Per le direttive per l'interprete (fsi.exe), vedere Riferimenti per F# Interactive (fsi.exe).

Aggiunte alla community

AGGIUNGI
Mostra:
© 2015 Microsoft