Derleyici Yönergeleri

Bu konuda işlemci yönergeleri ve derleyici yönergeleri açıklanmıştır.

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

Ön işlemci Yönergeleri

Önişlemci yönergesine # simgesi ön eki eklenmiştir ve tek başına bir satırda görünür. Derleyiciden önce çalışan ön işlemci tarafından yorumlanır.

Aşağıdaki tabloda F# ile kullanılabilen önişlemci yönergeleri listelenmiştir.

Yönergesi Description
#ifsembol Koşullu derlemeyi destekler. Sembol tanımlandı ise #if bölümünden sonra gelen kod. simgesi ile de olumsuz ! olabilir.
#else Koşullu derlemeyi destekler. Öncekiyle kullanılan sembol tanımlanmamışsa, kodun bir bölümünü #if içerecek şekilde işaretler.
#endif Koşullu derlemeyi destekler. Kodun koşullu bölümünün sonunu işaretler.
#[line] int,
#[line] int dizesi,
#[line] int verbatim-string
Hata ayıklama için özgün kaynak kod satırı ve dosya adını gösterir. Bu özellik, F# kaynak kodu oluşturan araçlar için sağlanır.
#nowarnwarningcode Derleyici uyarısını veya uyarılarını devre dışı bırakma. Bir uyarıyı devre dışı bırakmak için derleyici çıkışından numarasını bulun ve tırnak içine alın. "FS" ön eklerini atlar. Aynı satırda birden çok uyarı numarasını devre dışı bırakmak için, her s numarayı tırnak işaretlerine dahil alın ve her dizeyi bir boşlukla ayırın. Örnek:

#nowarn "9" "40"

Bir uyarıyı devre dışı bırakmanın etkisi, yönergesi.|'den önce gelen dosya bölümleri de dahil olmak üzere dosyanın tamamına uygulanır

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 dillerdekiyle aynı değildir. Örneğin, semboller içeren Boole ifadelerini kullanamaz ve true özel false bir anlamı yoktur. yönergesinde kullanabileceğiniz semboller komut satırı veya proje if ayarlarında tanımlanmalıdır; önişlemci define yönergesi yoktur.

Aşağıdaki kod , ve yönergelerinin #if #else kullanımını #endif göstermektedir. Bu örnekte kod, tanımının iki sürümünü function1 içerir. -define VERSION1 derleyici seçeneği kullanılarak tanımlandığı zaman,yönergesi ile #if yönergesi arasındaki kod #else 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

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

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

Bir sembolünü ile de olumsuz ! siniz. Bu örnekte, bir dizenin değeri yalnızca hata ayıklama sırasında bir şey olur:

#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ı raporlar. Bu satır numaraları bir dosyanın ilk satırı için 1'den başlar. Ancak, başka bir araçtan F# kaynak kodu üretiyorsanız, oluşturulan F# kodundaki hatalar büyük olasılıkla başka bir kaynaktan kaynaklanır, çünkü oluşturulan kodda satır numaraları genellikle ilgi değildir. yönergesi, F# kaynak kodu oluşturan araçların yazarlarının özgün satır numaraları ve kaynak dosyaları hakkında bilgileri oluşturulan #line F# koduna iletir.

yönergesi #line kullansanız, dosya adları tırnak içine alınmalıdır. Dizenin önünde verbatim belirteci ( ) yoksa, yolda kullanmak için biri yerine iki ters eğik çizgi karakteri kullanarak ters eğik çizgi karakterlerinden kaçış karakteri @ kullanmalıdır. Aşağıdakiler geçerli satır belirteçleridir. Bu örneklerde, özgün dosyanın bir araç aracılığıyla çalıştırıldıklarında otomatik olarak oluşturulan bir F# kod dosyasıyla sonuç olduğunu ve bu yönergelerin bulunduğu konumdaki kodun dosyasındaki 25. satırda yer alan bazı belirteçlerden üret olduğunu Script1 Script1 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çinde veya satırına yakın bazı yapılardan türetilen olduğunu 25 Script1 gösteriyor.

Ayrıca bkz.