Aracılığıyla paylaş


Derleyici Yönergeleri

Bu konu, işlemci yönergelerini ve derleyici yönergelerini açıklar.

F# Etkileşimli (dotnet fsi) yönergeleri için bkz . F# ile Etkileşimli Programlama.

Ön işlemci Yönergeleri

Önişlemci yönergesi # simgesiyle ön eklenmiştir ve tek başına bir satırda görünür. Derleyicinin kendisinden önce çalışan önişlemci tarafından yorumlanır.

Aşağıdaki tabloda F# dilinde kullanılabilen önişlemci yönergeleri listeleniyor.

Yönerge Açıklama
#ifsembol Koşullu derlemeyi destekler. Simge tanımlandıysa, eklendikten sonraki #if bölümdeki kod. Simgesi ile !de olumsuzlanabilir.
#else Koşullu derlemeyi destekler. Öncekiyle #if kullanılan simge tanımlanmamışsa kodun bir bölümünü dahil etmek üzere işaretler.
#endif Koşullu derlemeyi destekler. Kodun koşullu bölümünün sonunu işaretler.
#[satır] int,
#[satır] int dizesi,
#[satır] int verbatim-string
Hata ayıklama için özgün kaynak kod satırını ve dosya adını gösterir. Bu özellik, F# kaynak kodu oluşturan araçlar için sağlanır.
#nowarnuyarı kodu Derleyici uyarılarını veya uyarılarını devre dışı bırakır. Uyarıyı devre dışı bırakmak için derleyici çıkışından numarasını bulun ve tırnak içine ekleyin. "FS" ön ekini atla. Aynı satırda birden çok uyarı numarasını devre dışı bırakmak için, her sayıyı tırnak içine alın ve her dizeyi bir boşlukla ayırın.
Örneğin: #nowarn "9" "40"

Uyarıyı devre dışı bırakmanın etkisi, yönergeden önceki dosya bölümleri de dahil olmak üzere dosyanın tamamı için geçerlidir.|

Koşullu Derleme Yönergeleri

Bu yönergelerden biri tarafından devre dışı bırakılan kod, Visual Studio Code Düzenleyicisi'nde soluk görüntülenir.

Not

Koşullu derleme yönergelerinin davranışı diğer dillerde olduğu gibi değildir. Örneğin, simgeler içeren Boole ifadelerini kullanamazsınız ve true false özel bir anlamı yoktur. yönergesinde if kullandığınız semboller komut satırı tarafından veya proje ayarlarında tanımlanmalıdır; önişlemci yönergesi yoktur define .

Aşağıdaki kod , #elseve #endif yönergelerinin #ifkullanımını gösterir. Bu örnekte kod, tanımının function1iki sürümünü içerir. -define derleyicisi seçeneği kullanılarak tanımlandığındaVERSION1, yönergesi ile yönergesi #if #else arasındaki kod etkinleştirilir. Aksi takdirde ve arasındaki #else #endif kod etkinleştirilir.

#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

F# içinde önişlemci yönergesi yoktur #define . yönergesi tarafından #if kullanılan simgeleri tanımlamak için derleyici seçeneğini veya proje ayarlarını kullanmanız gerekir.

Koşullu derleme yönergeleri iç içe geçmiş olabilir. Girintileme, önişlemci yönergeleri için önemli değildir.

Ayrıca ile !bir simgeyi de olumsuzlayabilirsiniz. Bu örnekte, bir dizenin değeri yalnızca hata ayıklama olmadığında bir şeydir:

#if !DEBUG
let str = "Not debugging!"
#else
let str = "Debugging!"
#endif

Satır Yönergeleri

Derleme sırasında derleyici, her hatanın oluştuğu satır numaralarına başvurarak F# kodundaki hataları bildirir. Bu satır numaraları, bir dosyadaki ilk satır için 1'de başlar. Ancak, başka bir araçtan F# kaynak kodu oluşturuyorsanız, oluşturulan F# kodundaki hatalar büyük olasılıkla başka bir kaynaktan kaynaklandığından, oluşturulan koddaki satır numaraları genellikle ilgi çekici değildir. yönergesi #line , F# kaynak kodu oluşturan araç yazarlarının özgün satır numaraları ve kaynak dosyaları hakkındaki bilgileri oluşturulan F# koduna geçirmesi için bir yol sağlar.

yönergesini kullandığınızda, dosya adlarının #line tırnak içine alınması gerekir. Dizenin önünde tamsayı belirteci (@) görüntülenmediği sürece, bunları yolda kullanmak için bir yerine iki ters eğik çizgi karakteri kullanarak ters eğik çizgi karakterlerinden kurtulmanız gerekir. Aşağıdakiler geçerli satır belirteçleridir. Bu örneklerde, özgün dosyanın Script1 bir araç üzerinden çalıştırıldığında otomatik olarak oluşturulan bir F# kod dosyasıyla sonuçlandığını ve bu yönergelerin konumundaki kodun dosyasındaki Script125. satırdaki bazı belirteçlerden oluşturulduğunu varsayalım.

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

Bu belirteçler, bu konumda oluşturulan F# kodunun içindeki veya satırındaki 25 Script1bazı yapılardan türetildiğini gösterir.

Ayrıca bkz.