Pengarah Kompilator

Topik ini menjelaskan pengarah prosesor dan pengarah kompilator.

Untuk pengarah F# Interactive (dotnet fsi), lihat Pemrograman Interaktif dengan F# .

Pengarah Praprosesor

Pengarah praprosesor diawali dengan simbol # dan muncul pada baris dengan sendirinya. Ini ditafsirkan oleh praprosesor, yang berjalan sebelum kompilator itu sendiri.

Tabel berikut mencantumkan pengarah praprosesor yang tersedia di F#.

Direktif Deskripsi
#if simbol Mendukung kompilasi bersyarat. Kode di bagian setelah #if disertakan jika simbol ditentukan. Simbol juga dapat dinegasikan dengan !.
#else Mendukung kompilasi bersyarat. Menandai bagian kode yang akan disertakan jika simbol yang digunakan dengan #if sebelumnya tidak ditentukan.
#endif Mendukung kompilasi bersyarat. Menandai akhir bagian kode bersyarat.
#[baris] int,
#[baris] intstring,
#[baris] intverbatim-string
Menunjukkan baris kode sumber asli dan nama file, untuk debugging. Fitur ini disediakan untuk alat yang menghasilkan kode sumber F#.
#nowarnwarningcode Menonaktifkan peringatan atau peringatan kompilator. Untuk menonaktifkan peringatan, temukan nomornya dari output kompilator dan sertakan dalam tanda kutip. Hilangkan awalan "FS". Untuk menonaktifkan beberapa nomor peringatan pada baris yang sama, sertakan setiap nomor dalam tanda kutip, dan pisahkan setiap string dengan spasi.
Misalnya: #nowarn "9" "40"

Efek menonaktifkan peringatan berlaku untuk seluruh file, termasuk bagian dari file yang mendahului pengarah.|

Pengarah Kompilasi Bersyarat

Kode yang dinonaktifkan oleh salah satu pengarah ini tampak redup di Visual Studio Code Editor.

Catatan

Perilaku pengarah kompilasi bersyarat tidak sama seperti dalam bahasa lain. Misalnya, Anda tidak dapat menggunakan ekspresi Boolean yang melibatkan simbol, dan true dan false tidak memiliki arti khusus. Simbol yang Anda gunakan dalam pengarah if harus ditentukan oleh baris perintah atau dalam pengaturan proyek; tidak ada define pengarah praprosesor.

Kode berikut mengilustrasikan penggunaan pengarah #if, #else, dan #endif. Dalam contoh ini, kode berisi dua versi definisi function1. Ketika VERSION1 didefinisikan dengan menggunakan -tetapkan opsi kompilator, kode antara pengarah #if dan pengarah #else diaktifkan. Jika tidak, kode antara #else dan #endif diaktifkan.

#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

Tidak ada #define pengarah praprosesor di F#. Anda harus menggunakan opsi kompilator atau setelan proyek untuk menentukan simbol yang digunakan oleh pengarah #if.

Pengarah kompilasi bersyarat dapat dikumpulkan. Lekukan tidak signifikan untuk pengarah praprosesor.

Anda juga dapat meniadakan simbol dengan !. Dalam contoh ini, nilai string adalah sesuatu yang hanya ada saat tidak melakukan debug:

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

Pengarah Garis

Saat membangun, kompilator melaporkan kesalahan dalam kode F# dengan merujuk nomor baris di mana setiap kesalahan terjadi. Nomor baris ini dimulai dari 1 untuk baris pertama dalam file. Namun, jika Anda membuat kode sumber F# dari alat lain, nomor baris dalam kode yang dihasilkan umumnya tidak menarik, karena kesalahan dalam kode F# yang dihasilkan kemungkinan besar muncul dari sumber lain. Pengarah #line menyediakan cara bagi pembuat alat yang menghasilkan kode sumber F# untuk meneruskan informasi tentang nomor baris asli dan file sumber ke kode F# yang dihasilkan.

Saat Anda menggunakan pengarah #line, nama file harus diapit tanda kutip. Kecuali jika token verbatim (@) muncul di depan string, Anda harus menghindari karakter garis miring terbalik dengan menggunakan dua karakter garis miring terbalik alih-alih satu karakter untuk menggunakannya di jalur. Berikut ini adalah token baris yang valid. Dalam contoh ini, asumsikan bahwa file asli Script1 menghasilkan file kode F# yang dibuat secara otomatis saat dijalankan melalui alat, dan bahwa kode di lokasi pengarah ini dihasilkan dari beberapa token pada baris 25 dalam 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"

Token ini menunjukkan bahwa kode F# yang dihasilkan di lokasi ini berasal dari beberapa konstruksi pada atau dekat garis 25 in Script1.

Lihat juga