C# – Directive Preprocessor
Preprocessor Directives memberikan instruksi kepada compiler untuk memproses informasi sebelum kompilasi sebenarnya dimulai.
Semua preprocessor directives dimulai dengan tanda #, dan cuma karakter spasi yang boleh muncul sebelum preprocessor directive di sebuah baris. Preprocessor directives bukan pernyataan, jadi enggak perlu pake titik koma (;) diakhirnya.
Kompiler C# gak punya preprocessor yang terpisah; tapi, directive-directive itu diproses kayak ada preprocessor. Di C#, directive-directive preprocessor dipake buat bantuin kompilasi kondisional. Bedanya dengan directive-diective di C dan C++, directive-diective ini gak dipake buat bikin macro. Satu directive preprocessor harus jadi satu-satunya perintah di dalam satu baris.
Directive Preprocessor C#
Berikut ini adalah tabel yang menjelaskan directive preprocessor yang ada dalam C#.
Sr.No. | Preprocessor Directive & Description |
---|---|
1 | #define Digunakan untuk mendefinisikan serangkaian karakter yang disebut simbol. |
2 | #undef Digunakan untuk menghapus definisi sebuah simbol. |
3 | #if Digunakan untuk menguji apakah sebuah simbol atau simbol-simbol bernilai true. |
4 | #else Digunakan untuk membuat directive kondisional gabungan bersama dengan #if. |
5 | #elif Digunakan untuk membuat directive kondisional gabungan. |
6 | #endif Menandakan akhir dari sebuah directive kondisional. |
7 | #line Digunakan untuk mengubah nomor baris kompiler dan (opsional) nama file keluaran untuk error dan peringatan. |
8 | #error Digunakan untuk menghasilkan error dari lokasi tertentu dalam kode. |
9 | #warning Digunakan untuk menghasilkan peringatan level satu dari lokasi tertentu dalam kode. |
10 | #region Digunakan untuk menentukan blok kode yang bisa diperluas atau dikompres saat menggunakan fitur outlining di Editor Kode Visual Studio. |
11 | #endregion Menandakan akhir dari blok #region. |
Preprocessor #define
Directive preprocessor #define ini digunakan untuk membuat konstanta simbolik.
Directive preprocessor #define memungkinkan kamu mendefinisikan sebuah simbol, sehingga dengan menggunakan simbol tersebut sebagai ekspresi yang diberikan ke directive #if, ekspresi tersebut akan menghasilkan nilai true. Berikut adalah sintaksnya:
#define symbol
Program berikut ini menunjukkan contoh cara memakai #define.
#define PI
using System;
namespace PreprocessorDAppl {
class Program {
static void Main(string[] args) {
#if (PI)
Console.WriteLine("PI is defined");
#else
Console.WriteLine("PI is not defined");
#endif
Console.ReadKey();
}
}
}
Ketika kode di atas di-compile dan dijalankan, hasilnya bakal muncul seperti ini:
PI is defined
Directive Kondisional
Kamu bisa pakai #if buat bikin directive kondisional. Directive kondisional berguna buat ngetes simbol atau beberapa simbol apakah mereka nilainya bener. Kalo nilainya bener, kompiler bakal ngevaluasi semua kode antara #if sama directive berikutnya.
Nah, jadi syntax untuk perintah kondisional tuh seperti ini:
#if symbol [operator symbol]...
Di sini, simbol adalah nama dari simbol yang ingin kamu uji. Kamu juga bisa menggunakan true dan false atau menambahkan operator negasi di depan simbol tersebut.
Operator simbol adalah operator yang digunakan untuk mengevaluasi simbol. Operator-operator tersebut dapat berupa:
- == (sama dengan)
- != (tidak sama dengan)
- && (dan)
- || (atau)
Kamu juga bisa mengelompokkan simbol dan operator dengan tanda kurung. Petunjuk kondisional digunakan untuk mengompilasi kode untuk versi debug atau saat mengompilasi untuk konfigurasi tertentu. Directive kondisional yang dimulai dengan petunjuk #if harus secara eksplisit diakhiri dengan petunjuk #endif.
Program berikut ini menunjukkan penggunaan directive kondisional:
#define DEBUG
#define VC_V10
using System;
public class TestClass {
public static void Main() {
#if (DEBUG && !VC_V10)
Console.WriteLine("DEBUG is defined");
#elif (!DEBUG && VC_V10)
Console.WriteLine("VC_V10 is defined");
#elif (DEBUG && VC_V10)
Console.WriteLine("DEBUG and VC_V10 are defined");
#else
Console.WriteLine("DEBUG and VC_V10 are not defined");
#endif
Console.ReadKey();
}
}
Ketika kode di atas di-compile dan dijalankan, hasilnya bakal muncul seperti ini:
DEBUG and VC_V10 are defined