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 |
---|---|
#if sembol |
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. |
#nowarn uyarı 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 , #else
ve #endif
yönergelerinin #if
kullanımını gösterir. Bu örnekte kod, tanımının function1
iki 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 Script1
25. 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
Script1
bazı yapılardan türetildiğini gösterir.