Direktivy kompilátoru (F#)
Toto téma popisuje procesoru směrnic a direktivy kompilátoru.
Direktivy preprocesoru
Direktiva preprocesoru předponou je symbolem # a zobrazí se na řádku samostatně.Je interpretována preprocesoru, které se spouští před samotnou kompilátor.
Následující tabulka uvádí direktivy preprocesoru, které jsou k dispozici v F#.
Směrnice |
Description |
---|---|
#ifsymbol |
Podporuje podmíněné kompilace.Kód v části po #if je zahrnuta, pokud symbol je definován. |
#else |
Podporuje podmíněné kompilace.Označí části kódu zahrnout, pokud symbol s předchozím #if není definována. |
#endif |
Podporuje podmíněné kompilace.Označuje konec podmíněné části kódu. |
#[řádek] int, #[line] intstring, #[line]intverbatim-string |
Označuje původní zdrojový kód řádku a název souboru, pro ladění.Tato funkce je k dispozici pro nástroje, které generují F# zdrojový kód. |
Podmíněné kompilace směrnic
Kód, který je deaktivován podle jedné z těchto směrnic v šedé Visual Studio Editor kódu.
[!POZNÁMKA]
Chování podmíněné kompilace směrnic není stejné jako v jiných jazycích.Nelze například použít logické výrazy zahrnující symboly a true a false mají zvláštní význam.Symboly, které můžete použít v #if směrnice musí být definovány pomocí příkazového řádku nebo v nastavení projektu; neexistuje žádný #define direktivu preprocesoru.
Následující kód ilustruje použití #if, #else, a #endif směrnic.V tomto příkladu kódu obsahuje dvě verze definice function1.Při VERSION1 je definován pomocí -definovat volba kompilátoru, kód mezi #if směrnice a #else směrnice je aktivován.Jinak kód mezi #else a #endif je aktivován.
#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
Neexistuje žádný #define direktivu preprocesoru F#.Pomocí nastavení kompilátoru možnost nebo projekt musí definovat symboly používané #if směrnice.
Podmíněné kompilace směrnic mohou být vnořené.Odsazení je významné pro direktivy předprocesoru.
Řádek směrnic
Při vytváření, kompilátor ohlásí chyby v kódu F# odkazem na čísla řádků, kdy dojde k chybě, každý.Tato čísla začínají na 1 pro první řádek v souboru.Pokud generujete F# zdrojový kód z jiného nástroje, čísla řádků do generovaného kódu jsou však obecně není zájmu, protože chyby generované F# kód pravděpodobně vzniknou z jiného zdroje.#line Směrnice umožňuje autorům nástroje, které generují F# zdrojový kód generovaný kód F# předávat informace o řádku původní čísla a zdrojové soubory.
Při použití #line směrnice, soubor názvy musí být uzavřeny v uvozovkách.Pokud není doslovné znění token (@) se zobrazí před řetězec, musí escape zpětného lomítka pomocí dvě zpětná lomítka místo za účelem jejich použití v cestě.Platný řádek tokeny jsou následující.V těchto příkladech předpokládejme, že původní soubor Script1 výsledků v automaticky generované F# kód souboru při spuštění pomocí nástroje a generování kódu v umístění těchto směrnic z některých tokeny na řádku v souboru 25 Script1.
# 25
#line 25
#line 25 "C:\\Projects\\MyProject\\MyProject\\Script1"
#line 25 @"C:\Projects\MyProject\MyProject\Script1"
# 25 \@\"C:\Projects\MyProject\MyProject\Script1\"
Tato klíčová slova ukazují, že na tomto místě generovaný kód F# je odvozen z některé konstrukce na nebo poblíž řádku 25 v Script1.
Direktivy kompilátoru
Direktivy kompilátoru podobat direktivy předprocesoru, protože předchází přidejte, ale namísto interpretuje preprocesoru, jsou ponechány pro kompilátor interpretovat a jednat.
Následující tabulka uvádí směrnice kompilátoru, který je k dispozici v F#.
Směrnice |
Description |
---|---|
#light["na" | "vypnout"] |
Povolí nebo zakáže lehký syntaxe, kompatibilita s jinými verzemi ML.Lehký syntaxe je ve výchozím nastavení povoleno.Syntaxe podrobného vždy povoleno.Můžete tedy lehký syntaxe a úplné syntaxe.Směrnice #light samotný je ekvivalentní #light "on".Pokud zadáte #light "off", je třeba použít úplné syntaxi pro všechny konstrukce jazyka.Zobrazí syntaxi v dokumentaci k F# s předpokladů pomocí syntaxe lehký.Další informace naleznete v tématu Syntaxe podrobného (F#). |
Směrnic interpret (fsi.exe), viz F# referenční interaktivní (fsi.exe).